Список категорий типов пользовательских сообщений и их сообщений - PullRequest
0 голосов
/ 06 мая 2019

Я искал все это, и ни один из приведенных здесь кодов мне не помог. У меня есть пользовательский тип записи, который называется Products, и в каждом из них есть определенные дочерние категории.

Например, в продуктах:

  • Hi Fi Compoments - Усилители

  • Домашний кинотеатр - AV-ресиверы - Стерео Ресиверы - Системы

  • Портативное аудио - Цифровые аудиоплееры

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

Домашний кинотеатр - AVRecievers - список сообщений AV-ресивера - Стереосистемы - Список постов стереосистем - Системы - Список системных сообщений

Я столкнулся с двумя проблемами с кодом, который нашел: 1. По какой бы то ни было причине, когда я определяю пользовательский тип записи «Продукты», он извлекает каждую категорию из базы данных WordPress.

или

  1. Когда он включает только определенные категории продуктов, все они вышли из строя и больше не находятся в какой-либо родительской структуре.

У меня есть тип сообщения и он зарегистрирован и работает в другом месте. Я включил тип записи reg, а также из functions.php.

Любая помощь будет принята с благодарностью.

register_post_type( 'Products',
    // CPT Options
        array(
            'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'Product' )
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array( 'title', 'editor', 'thumbnail' ),
            'taxonomies'=> array('category'),
            'rewrite' => array('slug' => 'product'),
        )
    );
}

Вот пример кода, который я пробовал отсюда, который отображает подкатегории, но нет родительских и дочерних отношений и их вытягивающих категорий, таких как NEWS, которых нет в Продуктах, и нет сообщений.

 <?php
       $args = array(
       'type'                     => 'products',
       'child_of'                 => 0,
       'parent'                   => '',
       'orderby'                  => 'name',
       'order'                    => 'ASC',
       'hide_empty'               => 1,
       'hierarchical'             => 1,
       'pad_counts'               => false );
       $categories = get_categories($args);
       echo '<ul>';

       foreach ($categories as $category) {
         $url = get_term_link($category);?>
          <li><a href="<?php echo $url;?>"><?php echo $category->name; ?></a></li>
         <?php
       }
       echo '</ul>';
   ?>

Ответы [ 2 ]

0 голосов
/ 07 мая 2019
  register_post_type( 'Products',
    // CPT Options
        array(
            'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'Product' )
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array( 'title', 'editor', 'thumbnail' ),

            'rewrite' => array('slug' => 'product'),
        )
    );
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );


function my_taxonomies_product() {
  $labels = array(
    'name'              => _x( 'Product Categories', 'taxonomy general name' ),
    'singular_name'     => _x( 'Product Category', 'taxonomy singular name' ),
    'search_items'      => __( 'Search Product Categories' ),
    'all_items'         => __( 'All Product Categories' ),
    'parent_item'       => __( 'Parent Product Category' ),
    'parent_item_colon' => __( 'Parent Product Category:' ),
    'edit_item'         => __( 'Edit Product Category' ), 
    'update_item'       => __( 'Update Product Category' ),
    'add_new_item'      => __( 'Add New Product Category' ),
    'new_item_name'     => __( 'New Product Category' ),
    'menu_name'         => __( 'Product Categories' ),

  );
  $args = array(
    'labels' => $labels,
    'hierarchical' => true,
  );
  register_taxonomy( 'product_category', 'products', $args );
}
add_action( 'init', 'my_taxonomies_product', 0 );

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

0 голосов
/ 07 мая 2019

То, что вы ищете, это get_terms(). Это позволяет вам настроить, для какой таксономии вы хотите получить термины.

$terms = get_terms( array(
  'taxonomy' => 'Products',
  'hide_empty' => true,
) );

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

Полный ресурс: https://developer.wordpress.org/reference/functions/get_terms/

...