0

我为帖子创建了一个元框,命名为“资源”,我可以在其中从后端预定义的选择元素中选择一个值。保存后它会显示在前端。请看图片。

后端

前端

现在我希望它像标签、作者和类别一样工作。当我单击它时,它将显示所有选择的具有相同值的帖子。但不知道从哪里开始。

我使用 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'); ?>

提前致谢。

4

1 回答 1

0

您应该使用自定义分类法,因为它具有您内置的所需功能。将下面给出的代码粘贴到您的主题 functions.php 文件中。在此处输入代码

$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,
) );

从archive.php 创建模板文件taxonomy-resource.php 以显示过滤(按新添加的分类)的帖子列表。

用于the_terms(get_the_ID(),'resource', $before, $sep, $after );显示循环内特定帖子的选定资源。

于 2016-12-22T13:52:52.297 回答