2016-04-17 2 views
1

Я купил тему Wordpress, надеясь, что после некоторой настройки кода она должна достичь того, чего я хочу.Fetch category from custom post type

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

enter image description here

То, что я пытаюсь достичь листинг на странице пользовательского шаблона все категории в портфеле. Пока у меня есть этот код, но все, что он делает, - это получить записи portofolio, а не категории.

<?php 
//$args = array('post_type' => 'tm_portfolio'); 
$term_ids = get_terms('tm_portfolio_category', ['fields' => 'ids']); 
$args = [ 
    'tax_query' => [ 
     [ 
      'taxonomy' => 'tm_portfolio_category', 
      'terms' => $term_ids 
     ] 
    ] 
]; 
$my_query = null; 
$my_query = new WP_Query($args); 
if($my_query->have_posts()) { 
    echo 'List of categories'; 
    while ($my_query->have_posts()) : $my_query->the_post(); ?> 
    <p><a href="<?php the_permalink() ?>" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> 
    <?php 
    endwhile; 
} 
wp_reset_query(); // Restore global post data stomped by the_post(). 
?> 

Как вы можете видеть в коде, в качестве первой строки, я попытался извлечь из пользовательского типа поста, но у меня был тот же самый результат.

Я выяснил имя/пулю почтового типа/таксономии, проверив ссылку на панели администратора при добавлении категории (проверьте рисунок ниже). enter image description here

ответ

1

Я не слишком разбираюсь в коде, но с самого начала я вижу, что эта строка неправильная.

$term_ids = get_terms('tm_portfolio_category', ['fields' => 'ids']); 

это должно быть "Идентификатор"

например,

$term_ids = get_terms('tm_portfolio_category', ['fields' => 'id']); 

EDIT

К сожалению мой плохой,

Вы можете попробовать этот подход вместо

$term_ids = get_terms('tm_portfolio_category', ['fields' => 'ids']); 

$posts = query_posts(array(
    'post_type' => 'tm_portfolio', 
    'tax_query' => array(
     array(
      'taxonomy' => 'tm_portfolio_category', 
      'terms' => $term_ids, 
      ) 
     ) 
    )); 

foreach ($posts as $post) { 
    echo 'List of categories'; 
    ?> 
    <p><a href="<?php echo get_permalink($post->ID); ?>" title="Permanent Link to <?php echo the_title_attribute(array('post'=>$post->ID)); ?>"> 
    <?php echo get_the_title($post->ID); ?> 
    </a></p> 
    <?php 
} 
wp_reset_query(); 

Я бы не рекомендовал использовать нативный WordPress Loop в этом случае ради гибкости.

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

EDIT

Жаль, что я чувствую, что я храню отсутствует первоначальный вопрос.

$terms = get_terms('tm_portfolio_category'); 

собирается предоставить вам список условий.

foreach ($terms as $term) { 
    ?> 
    List of categories 
    <p> 
     <a href="<?php echo $term->slug; ?>" title="Permanent Link to <?php echo $term->name ?>" ><?php echo $term->name ?></a> 
    </p> 
    <?php 
} 

?> 

Ниже приводится желаемый результат без необходимости создавать другой запрос.

+0

Спасибо за попытку помочь мне, к сожалению, он по-прежнему возвращает записи, а не категории. – Darkkz

+0

Постараюсь объяснить. Как изображено на первом изображении, у меня есть (как я уже сказал, что, по-моему, тип сообщения) Portofolio. Я использую это, чтобы установить отношения между странами и клубами. Добавив новую запись в portofolio (Добавить новую кнопку/Все портфолио), я в основном добавлю Клуб.Все эти клубы будут отсортированы/помещены в/в страны (которые фактически являются категориями). Версия tl; dr будет - portofolio entry = club. Категория portofolio = страна. – Darkkz

+0

Использование этих $ terms = get_terms ('tm_portfolio_category'); Мне удалось запросить некоторые из категорий. Как-то у меня есть в категориях Wp 7, но на странице он возвращает 4. – Darkkz