Как создать функцию как the_tags () или the_category () в WordPress?

Я создал мета-поле для публикации, названное «Ресурс», где я могу выбрать значение из предопределенного элемента select в бэкэнде. И после сохранения это показывает во внешнем интерфейсе. Пожалуйста, смотрите изображения.

Back-конец

Внешний интерфейс

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

Я использовал плагин Meta Box и сделал следующие коды в function.php

add_filter( 'rwmb_meta_boxes', 'resource_meta_box' );
function resource_meta_box( $meta_boxes ) {

$meta_boxes[] = array(
'id'         => 'resource_box',
'title'      => esc_html__( 'Resource' ),
'post_types' => array( 'post' ),
'context'    => 'side',
'priority'   => 'high',
'autosave'   => true,

// List of meta fields
'fields'     => array(
// RESOURCE BOX
array(
'name'        => esc_html__( '' ),
'id'          => "resource",
'type'        => 'select',
// Array of 'value' => 'Label' pairs for select box
'options'     => array(
'Item 1' => esc_html__( 'Item 1' ),
'Item 2' => esc_html__( 'Item 2' ),
'Item 3' => esc_html__( 'Item 3' ),
'Item 4' => esc_html__( 'Item 4' ),
'Item 5' => esc_html__( 'Item 5' ),
),
// Placeholder of Select.
'placeholder' => esc_html__( 'None' )
)
)
);
return $meta_boxes;
}

и следующий код, где это нужно было показать <?php echo rwmb_meta( 'resource'); ?>

Заранее спасибо.

0

Решение

Вы должны пойти на пользовательскую таксономию, потому что она имеет функции, необходимые вам, встроенные в нее. вставьте приведенный ниже код в вашу тему functions.php file.enter code здесь

$labels = array(
'name'                       => _x( 'Resources', 'taxonomy general name', 'textdomain' ),
'singular_name'              => _x( 'Resource', 'taxonomy singular name', 'textdomain' ),
'search_items'               => __( 'Search Resources', 'textdomain' ),
'popular_items'              => __( 'Popular Resources', 'textdomain' ),
'all_items'                  => __( 'All Resources', 'textdomain' ),
'parent_item'                => null,
'parent_item_colon'          => null,
'edit_item'                  => __( 'Edit Resource', 'textdomain' ),
'update_item'                => __( 'Update WResource', 'textdomain' ),
'add_new_item'               => __( 'Add New Resource', 'textdomain' ),
'new_item_name'              => __( 'New Resource Name', 'textdomain' ),
'separate_items_with_commas' => __( 'Separate Resources with commas', 'textdomain' ),
'add_or_remove_items'        => __( 'Add or remove Resources', 'textdomain' ),
'choose_from_most_used'      => __( 'Choose from the most used Resources', 'textdomain' ),
'not_found'                  => __( 'No Resources found.', 'textdomain' ),
'menu_name'                  => __( 'Resources', 'textdomain' ),
);

$args = array(
'hierarchical'          => true,
'labels'                => $labels,
'show_ui'               => true,
'show_admin_column'     => true,
'update_count_callback' => '_update_post_term_count',
'query_var'             => true,
'rewrite'               => array( 'slug' => 'resource' ),
);

register_taxonomy( 'resource', 'your-post-type-slug', $args );

замените текст ‘your-post-type-slug’ на пост-тип slug (например, «post» для сообщений или «page» для страниц и т. д.) типа записи, с которым вы хотите связать таксономию.

затем используйте приведенный ниже код, чтобы получить все термины, созданные в рамках таксономии «ресурс»

get_terms( 'resource', array(
'hide_empty' => false,
) );

создайте файл шаблона, taxonomy-resource.php из archive.php, чтобы показать отфильтрованный (по вновь добавленной таксономии) список публикаций.

использование the_terms(get_the_ID(),'resource', $before, $sep, $after ); показать выбранные ресурсы для конкретного сообщения в цикле.

0

Другие решения

Других решений пока нет …