Показывать только Первичную категорию (yoast) для пользовательской таксономии - PullRequest
0 голосов
/ 06 марта 2019

Мне нужно показать только основную категорию (функция, добавленная по умолчанию из YOAST) для пользовательской таксономии в моем шаблоне (wordpress).Таксономия взята из пользовательской "course_category" в плагине Learnpress.Это таксономия, которая добавляет категории в курсы, созданные плагином.

Я хотел бы создать функцию, которая будет вызывать ее в моих циклах, но я не знаю, как правильно написать ее для пользовательских таксономий..

Я обнаружил, что этот код используется для стандартных категорий (НЕ ДЛЯ ТАМОЖЕННЫХ НАЛОГОВ)

<?php
function get_primary_category( $post = 0 ) {
if ( ! $post ) {
$post = get_the_ID();
}
// SHOW YOAST PRIMARY CATEGORY, OR FIRST CATEGORY
$category = get_the_category( $post );
$primary_category = array();
// If post has a category assigned.
if ($category){
$category_display = '';
$category_slug = '';
$category_link = '';
$category_id = '';

if ( class_exists('WPSEO_Primary_Term') )
{
  // Show the post's 'Primary' category, if this Yoast feature is available, & one is set
  $wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id( $post ) );
  $wpseo_primary_term = $wpseo_primary_term->get_primary_term();
  $term = get_term( $wpseo_primary_term );
  if (is_wp_error($term)) {
    // Default to first category (not Yoast) if an error is returned
    $category_display = $category[0]->name;
    $category_slug = $category[0]->slug;
    $category_link = get_category_link( $category[0]->term_id );
    $category_id = $category[0]->term_id;

  } else {
    // Yoast Primary category
    $category_display = $term->name;
    $category_slug = $term->slug;
    $category_link = get_category_link( $term->term_id );
    $category_id = $term->term_id;
  }
}
else {
  // Default, display the first category in WP's list of assigned categories
  $category_display = $category[0]->name;
  $category_slug = $category[0]->slug;
  $category_link = get_category_link( $category[0]->term_id );
  $category_id = $term->term_id;
}
$primary_category['url'] = $category_link;
$primary_category['slug'] = $category_slug;
$primary_category['title'] = $category_display;
$primary_category['id'] = $category_id;

}
return $primary_category;
}
?>

, которые я могу вызвать позже с

<code><?php echo '<pre>'.print_r(get_primary_category(get_the_ID()), true).'
';?>
...