larrydesign
  • 0
Новичок

Условный запрос пользовательского типа записи и пользовательской таксономии

  • 0

Я работаю над проектом, который

  • настраиваемый тип сообщения под названием «Утверждение опыта»
  • Пользовательская таксономия, прикрепленная к этому типу сообщений под названием «Экспертиза».
  • 6 различных терминов для пользовательской таксономии: прибрежные, внутренние, морские, водные, морские, телекоммуникационные.

Итак, я создал этот цикл, который отлично работает, и я создал 6 разных страниц шаблона с этим циклом на каждом (я просто меняю термин для каждого)<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts("post_type=experiencestatements&expertise=coastal&showposts=10&paged=$page"); if ( have_posts() ) : while ( have_posts() ) : the_post() ?>

Итак, это работает нормально, но мне нужно создать другую страницу шаблона: например, page-exp-stmt-coastal.php для каждого термина. Я хотел бы иметь только одну страницу шаблона с условными операторами для каждого термина вместо 6 (и подсчета) страниц шаблона. Наличие 6+ разных страниц означает, что мне нужно заходить и менять каждую каждый раз, когда клиент хочет что-то изменить.

В общем, мне нужна помощь в создании условного тега, который меняет цикл в зависимости от термина таксономии. И я понятия не имею, как это сделать. Любая помощь приветствуется.

Спасибо, Ларри.

Share
  1. Есть несколько способов сделать это, один из них — использовать get_the_terms .

    Логика будет заключаться в том, чтобы запустить цикл и настроить вывод на основе терминов для этой таксономии (это, вероятно, не будет работать из коробки).

    //do a custom query here if needed
     if ( have_posts() ) : while ( have_posts() ) : the_post();
    
     $terms = get_the_terms($post->ID, 'Expertise');
    //this will return and array of terms for your Expertise taxonomy.
    
       foreach ( $terms as $term ) {
    
         if($term->name == 'marine') {
    
           // do custom stuff here 
    
         }elseif($term->name == 'waterway') {
    
           // do custom stuff here
         }elseif .... 
    

    После того, как вы прокомментируете, кажется, что вам не нужен настраиваемый контент для каждого термина, то есть один и тот же контент для всех 6 терминов, это можно сделать с помощью всего лишь цикла запроса, опять же, есть несколько способов сделать это.
    http://codex.wordpress.org/Class_Reference/WP_Query

    $args = array(
        'tax_query' => array(
            'relation' => 'AND',
            array(
                'taxonomy' => 'Expertise',
                'field' => 'slug',
                'terms' => array( 'marine', 'waterway', 'you_other_terms_here' ),
            ),
    
        )
    )
    $query = new WP_Query( $args );
    

    Другой способ — использовать мое первоначальное предложение и просто сопоставить все get_the_terms в массиве, который вы хотите использовать in_array, это может быть что-то вроде (продолжение исходного кода выше), но есть несколько способов сделать это в php:

    foreach ( $terms as $term ) {
    
    if (in_array('marine', '$term')) && (in_array('waterway', '$term')) && etc..
       //do stuff
    }
    
    • 0
    • Спасибо, Вик, это позволило бы мне разместить весь контент на одной странице. Это будет полезно. Но вот еще уточнение того, что я хочу. Я хочу использовать один и тот же контент (.. делать здесь пользовательские вещи..) для каждого термина. Есть ли способ создать одну страницу шаблона, которую я применяю к этим 6 страницам, а затем, в зависимости от того, какая это страница, может быть, идентификатор страницы, цикл изменится ??? Другими словами, я бы предпочел не копировать и не вставлять «сделать пользовательский материал здесь» повторно, потому что эта часть довольно обширна, много настраиваемых полей и т. д.

      • 0
    • Непонятно, почему вы использовали 6 страниц, когда кажется, что вам просто нужен базовый цикл для этих терминов без какого-либо пользовательского контента. Я скорректирую ответ выше.

      • 0
  2. не могли бы вы создать шаблон под названием

    таксономия-Expertise.php

    согласно: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

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

    • 0

Оставить ответ

You must login to add an answer.