Пользовательский тип сообщения цикл родительской категории - PullRequest
0 голосов
/ 25 февраля 2019

На single.php у меня есть стандартный цикл WP, который отображает содержимое публикации.

<main>
    <div class="container">
        <?php if (have_posts()): while (have_posts()) : the_post(); ?>

            <article>
                <div class="col-md-12">
                    <h2><?php the_title(); ?></h2>
                    <?php the_content(); ?>
                </div>              
            </article>
        <?php endwhile; ?>
        <?php endif; ?>
    </div>
</main>

Ниже, у меня есть простой цикл, который отображает 3 последних пользовательских элемента типа записи

<div class="manuals">

            <?php
                    $loop = new WP_Query( array(
                            'post_type' => 'manuals',
                            'posts_per_page' => 3
                        )
                    );
            ?>

            <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
                    <div class="col-md-12">

                                <?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?>
                                    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
                                        <?php the_post_thumbnail(); // Fullsize image for the single post ?>
                                    </a>
                                <?php endif; ?>         
                                <h5><?php the_title(); ?></h5>
                    </div>
            <?php endwhile; wp_reset_query(); ?>    
</div>

Как посты, так и пользовательский тип поста имеют две категории WP (простые, продвинутые).Если пользователь открывает статью, которая размещена в категории «продвинутый», я бы хотел, чтобы пользовательский тип поста отображал только сообщения из категории «продвинутый» ...

Надеюсь, вы поняли, что я имею в виду, английский немой родной язык ... Спасибо за помощь!

1 Ответ

0 голосов
/ 25 февраля 2019

Если я понимаю, что вы имеете в виду, ваши простые / расширенные категории являются взаимоисключающими, поэтому вы можете предположить, что в текущем блоге есть одна и только одна категория.Предполагая, что это так, сначала вы хотите получить категорию текущего сообщения с помощью get_the_terms(), а затем передать эту категорию в свой пользовательский запрос с помощью tax_query.

Нечто подобное должно работать:

// main loop up here...

// get terms (categories) from the current post
$cats = get_the_terms($post->ID, 'category');

// default args for querying our manual posts
$manuals_query_args = array(
  'post_type' => 'manuals',
  'posts_per_page' => 3
);

// filter manuals by category, if and only if current post is categorized
if (isset($cats[0])) {
  $cat_id = $cats[0]->term_id;
  $manuals_query_args['tax_query'] = array(
    // note that tax_query needs to be an *array of arrays* -
    // in this case, an array containing just one array
    array(
      'taxomony' => 'category',
      'field'    => 'id',
      'terms'    => $cat_id
    )
  );
}

$loop = new WP_Query($manuals_query_args);

Возможно, вам придется настроить его, я не проверял этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...