Как я могу получить термины (post_tag) пользовательского элемента таксономии? Вордпресс

Я создал пользовательский тип сообщения «фото» и пользовательскую таксономию «фото кошки».

Тип «photo» поддерживает «catphoto» и «post_tag» в качестве таксономий.

Теперь мне нужно сделать один фильтр для клиента.

Мне нужно показать на странице taxonomy-catphoto.php все post_tags, которые относятся к текущему элементу 'catphoto'.

Например, у меня есть сообщение пользовательского типа «фото». Название этого поста — «Самолет». Этот пост принадлежит элементу "1961-1981" с кошачьими фотографиями. Также у него есть почтовые теги, такие как «космос», «самолеты», «звезды», «война».

Также, например, у меня есть пост «фото» с названием «Солдат». Он принадлежит элементу "1941-1961" и имеет "Вторая мировая война", "США", "СССР". ' как почтовые теги.

И теперь, когда я выбираю фото с кошкой 1941-1961, я должен получить список с: WW2 США СССР

Я пытаюсь так:

if (substr($_SERVER['REQUEST_URI'],1,8) == 'catphoto'){
    $cur_terms = get_terms('post_tag');
    if ($cur_terms) {
        foreach( $cur_terms as $cur_term ){
            echo $cur_term->name.'<br/>';
        }
    }
}

Теперь я получаю все почтовые теги всех элементов фото кошек. Как я могу исправить ограничение для определенного элемента фото кошки. Например, "1941-1961"?


person Dmitry Shulga    schedule 18.09.2016    source источник


Ответы (1)


Я решил это с помощью запроса $_GET. Так просто... Для начала я решил создать собственный тип таксономии (например, post_tags). Его имя «знак».

и после этого фрагмент:

if (substr($_SERVER['REQUEST_URI'],1,8) == 'catphoto'){
    $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); 

    $query = new WP_Query( array('post_type' => 'photo', 'catphoto' => $term->name));

    echo '<ul>';

    $uniqueTerms = array();
    $uniqueSlugs = array();
    $uniquePar = $term->slug;

    while ( $query->have_posts() ) { 
        $query->the_post();
        $terms = wp_get_post_terms(get_the_ID(), 'mark', array("fields" => "all"));

        foreach ($terms as $term1)
        {
            if(!in_array($term1->name, $uniqueTerms)) {
               $uniqueTerms[] = $term1->name;
               $uniqueSlugs[] = $term1->slug; 
            }
        }   
    } 

    for ($var = 0; $var < count($uniqueTerms); $var++)
        echo '<li><a href="'.esc_url( home_url( '/catphoto/' ) ).$uniquePar.'/?mark='.$uniqueSlugs[$var].'">'.$uniqueTerms[$var].'</a></li>';
    echo '</ul>';
}

Такой уродливый код здесь и там, но он работает.

и теперь в taxonomy-catphoto.php я заполняю:

$mark = $_GET['mark'];

и после этого небольшое изменение внутри запроса WP_Query

$query = new WP_Query( array( 'post_type' => 'photo', 'posts_per_page'=>56, 'paged'=> $paged, 'catphoto' => $term->name, 'mark' =>$mark) );

С уважением, Игорь

person Dmitry Shulga    schedule 18.09.2016