Вопрос: Страницы моих терминов таксономии показывают все сообщения

У меня есть две основные таксономии: 1. Libros2. Asuntos

и несколько терминов таксономии: 1. Аль Бужари2. Muslim3. La Paciencia4. La Fe5. La Caridad и многие другие термины таксономии, использующие пользовательский тип сообщения: hadices.

Дело в том, что, когда я нажимаю на ссылку, связанную с любым из терминов таксономии выше, отображаются все сообщения, а не только связанные сообщения. на срок таксономии я нажал. Я работаю над файлом taxonomy.php. Вот код, который у меня есть в файле taxonomy.php:

<?php   $taxes = array( 'libro_de_hadiz' , 'asunto');    $terms = get_terms( $taxes );    echo $terms;    $paged = ( get_query_var( 'paged' ) ) ? absint ( get_query_var( 'paged' ) ) : 1;        $args = array( 'post_type' => 'hadices',                  'posts_per_page' => 6,                  'paged' => $paged,                   ));      $loop =  new WP_Query( $args );    if ( $loop->have_posts() ) : ?>    <header class="page-header">        <?php            the_archive_title( '<h1 class="page-title">', '</h1>' );            the_archive_description( '<div class="taxonomy-description">', '</div>' );        ?>    </header><!-- .page-header --><?php endif; ?><div id="primary" class="content-area">    <main id="main" class="site-main" role="main">    <?php    if ( $loop->have_posts() ) : ?>        <?php        /* Start the Loop */       while ( $loop->have_posts() ) : $loop->the_post();            /*             * Include the Post-Format-specific template for the content.             * If you want to override this in a child theme, then include a file             * called content-___.php (where ___ is the Post Format name) and that will be used instead.             */           get_template_part( 'template-parts/post/content', get_post_format() );            $loop->the_posts_pagination( array(            'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' .$loop-> __( 'Previous page', 'twentyseventeen' ) . '</span>',            'next_text' => '<span class="screen-reader-text">' . $loop->__( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),            'before_page_number' => '<span class="meta-nav screen-reader-text">' . $loop->__( 'Page', 'twentyseventeen' ) . ' </span>',        ) );        endwhile;        $big = 999999999; //need an unlikely integer        echo paginate_links( array(                    'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),                    'format' => '/paged/%#%',                    'current' => max( 1, get_query_var('paged') ),                    'total' => $loop->max_num_pages                ) );else :        get_template_part( 'template-parts/post/content', 'none' );endif; wp_reset_postdata(); ?>    </main><!-- #main --></div><!-- #primary --><?php get_sidebar(); ?>

Это код для моей пользовательской записи и таксономий:

function cptui_register_my_cpts() {/** * Post Type: Hadices. */$labels = array(    "name" => __( "Hadices", "twentyseventeen" ),    "singular_name" => __( "Hadiz", "twentyseventeen" ),);$args = array(    "label" => __( "Hadices", "twentyseventeen" ),    "labels" => $labels,    "description" => "",    "public" => true,    "publicly_queryable" => true,    "show_ui" => true,    "show_in_rest" => false,    "rest_base" => "",    "has_archive" => false,    "show_in_menu" => true,    "exclude_from_search" => false,    "capability_type" => "post",    "map_meta_cap" => true,    "hierarchical" => false,    "rewrite" => array( "slug" => "hadiz", "with_front" => true ),    "query_var" => true,    "supports" => array( "title", "editor" ),    "taxonomies" => array( "libro_de_hadiz", "asunto" ),);register_post_type( "hadices", $args );

}

add_action ('init', 'cptui_register_my_cpts');

function cptui_register_my_taxes() {/** * Taxonomy: Libros de Hadiz. */$labels = array(    "name" => __( "Libros de Hadiz", "twentyseventeen" ),    "singular_name" => __( "Libro", "twentyseventeen" ),);$args = array(    "label" => __( "Libros de Hadiz", "twentyseventeen" ),    "labels" => $labels,    "public" => true,    "hierarchical" => false,    "label" => "Libros de Hadiz",    "show_ui" => true,    "show_in_menu" => true,    "show_in_nav_menus" => true,    "query_var" => true,    "rewrite" => array( 'slug' => 'libro_de_hadiz', 'with_front' => true, ),    "show_admin_column" => true,    "show_in_rest" => false,    "rest_base" => "",    "show_in_quick_edit" => false,);register_taxonomy( "libro_de_hadiz", array( "hadices" ), $args );register_taxonomy( "asunto", array( "hadices" ), array(    "name" => __( "Asuntos", "twentyseventeen" ),    "singular_name" => __( "Asunto", "twentyseventeen" ),    "label" => __( "Asuntos", "twentyseventeen" ),    "public" => true,    "hierarchical" => false,    "label" => "Asuntos",    "show_ui" => true,    "show_in_menu" => true,    "show_in_nav_menus" => true,    "query_var" => true,    "rewrite" => array( 'slug' => 'asunto', 'with_front' => true, ),    "show_admin_column" => true,    "show_in_rest" => false,    "rest_base" => "",    "show_in_quick_edit" => false,) );}add_action( 'init', 'cptui_register_my_taxes' );

Я видел ответы на пост по этой ссылке: Шаблон архива для терминов таксономии

Однако в ответах просто говорилось добавить таксономию-term.php для каждого термин, который будет очень утомительным в моем случае, так как мне понадобятся десятки файлов с похожим кодом, просто меняющим термин slug в tax_query. Есть ли способ добавить динамическую переменную для терминов в tax_query, чтобы показывать только сообщения, связанные с термином или любым другим решением, если оно есть?

Заранее спасибо

<

Ответы и комментарии:

Есть ли причина, по которой вы вызываете собственный запрос, а не используете запрос по умолчанию?
Создан 07-04-2018 10:49 Andy Macaulay-Brook

Да, как я называю пользовательский тип сообщения и пользовательские таксономии.
Создан 07-04-2018 10:43 user141312

Но WordPress уже делает это для вас.
Создан 07-04-2018 10:55 Andy Macaulay-Brook

Как это так? Извините, я новичок.
Создан 07-04-2018 10:49 user141312

Я разговариваю по телефону, поэтому не могу ответить легко. Я посмотрю, когда буду дома, никто больше не ответил.
Создан 07-04-2018 11:53 Andy Macaulay-Brook

Это правда, это сработало. Меня смутили статьи и учебники по WP_Query, но, похоже, они больше подходят для archive.php или для пользовательской страницы, а не для основного таксономии.php. Огромное спасибо.
Создан 07-04-2018 01:41 user141312

archive.php также работает таким образом. WP_Query - это только если вы хотите запрашивать посты отдельно от основного запроса, для виджета или чего-то подобного.
Создан 07-04-2018 01:02 Jacob Peattie

Просто у меня был другой вопрос, если я хочу дать возможность посетителю веб-сайта запрашивать больше, чем термин таксономии, чтобы отображать связанные типы сообщений на отдельной странице, будет ли это через форму в файле search.php или у него есть другой способ сделать это?
Создан 07-04-2018 01:06 user141312

Я не уверен, что полностью понимаю вопрос. Если вы хотите иметь страницу для всех Hadices, то она уже будет существовать в / hadices, пока public является true в register_post_type (). На этой странице будет использоваться любой шаблон, доступный на основе иерархии шаблонов.
Создан 07-04-2018 01:06 Jacob Peattie

На самом деле я имел в виду что-то еще. Я имел в виду, что мне нужно что-то вроде формы или панели запросов, где посетитель сайта может видеть хедиски на основе выбранных им таксономий. Так, например, пользователь хочет увидеть хедисы, связанные с термином таксономии Al Bujari и таксономическим термином La Paciencia, он делает запрос, который направляет его на страницу, на которой отображаются хадисы, помеченные как Al Bujari и La Paciencia. Большое спасибо за вашу помощь и вашу заметку на WP_Query.
Создан 07-04-2018 02:06 user141312

Как сказал Энди, WordPress загрузит правильные сообщения для вас. Вам не нужен пользовательский запрос. Когда вы просматриваете пользовательский тип записи или архив таксономии, в главном цикле уже будут правильные записи, основанные на URL.
Так что вам не нужно ничего из этого:
$ tax = array ('libro_de_hadiz', 'asunto');
    $ rules = get_terms ($ налоги);
    эхо $ условия;
    $ paged = (get_query_var ('paged'))? absint (get_query_var ('paged')): 1;
        $ args = array ('post_type' => 'hadices',
                 'posts_per_page' => 6,
                 'paged' => $ paged,
                  ));
      $ loop = new WP_Query ($ args);

Тогда $ loop-> have_posts () и $ loop-> the_post () должны быть просто have_posts () и the_post ().
Кроме того, вы немного увлеклись и добавили $ loop->, где это не имеет смысла. Вы должны удалить его отовсюду.
Создан 07-04-2018 01:58 Jacob Peattie15k41826