Wordpress 仅在所有_项目中显示某些自定义帖子
当我注册我的自定义帖子时,它会向WP Admin仪表板添加一个菜单选项,用户可以单击该选项,它会列出该类型的所有自定义帖子。(如果我对我所描述的页面不理解,请查看下面的图片) 该页面列出了该类型的所有自定义帖子,这很好,也很有效,但我只希望该页面显示某些自定义帖子。我只想显示其post_metaWordpress 仅在所有_项目中显示某些自定义帖子,wordpress,custom-post-type,Wordpress,Custom Post Type,当我注册我的自定义帖子时,它会向WP Admin仪表板添加一个菜单选项,用户可以单击该选项,它会列出该类型的所有自定义帖子。(如果我对我所描述的页面不理解,请查看下面的图片) 该页面列出了该类型的所有自定义帖子,这很好,也很有效,但我只希望该页面显示某些自定义帖子。我只想显示其post_metamy_flag等于true的自定义帖子。我的每个自定义帖子都有一个my_标志post_meta设置为true或false。我希望我的列表页面只显示其my_标志=true的自定义帖子 当我注册自定义帖子类型
my_flag
等于true的自定义帖子。我的每个自定义帖子都有一个my_标志
post_meta设置为true或false。我希望我的列表页面只显示其my_标志
=true的自定义帖子
当我注册自定义帖子类型时,可以这样做吗?即使不是,我该如何做到这一点
$labels = array(
'name' => _x( '_foo', 'Post Type General Name', '_foo' ),
'singular_name' => _x( 'Foo', 'Post Type Singular Name', '_foo' ),
'menu_name' => __( '_foo', '_foo' ),
'parent_item_colon' => __( 'Parent _foo', '_foo' ),
'all_items' => __( 'Foo Posts', '_foo' ),
'view_item' => __( 'View Foo', '_foo' ),
'add_new_item' => __( 'Add New Foo', '_foo' ),
'add_new' => __( 'Add New', '_foo' ),
'edit_item' => __( 'Edit Foo', '_foo' ),
'update_item' => __( 'Update Foo', '_foo' ),
'search_items' => __( 'Search Foo', '_foo' ),
'not_found' => __( 'Not Found', '_foo' ),
'not_found_in_trash' => __( 'Not found in Trash', '_foo' ),
);
$args = array(
'label' => __( 'foo', '_foo' ),
'description' => __( 'My custom posts', '_foo' ),
'labels' => $labels,
'supports' => array( 'title', 'revisions',
'taxonomies' => array( 'foo' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => 'my-plugin-menu',
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'show_in_rest' => true,
'query_var' => true,
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page'
);
register_post_type('foo', $args);
我将post_meta设置为:
add_post_meta($post_id, 'my_flag', true, true);
您可以编辑wp\u查询,该查询将从数据库中获取帖子列表。 请尝试以下功能:
function filter_my_posts($query) {
if ( $query->is_home() && $query->is_main_query() && is_post_type_archive( 'your_custom_post_type' ) ) {
$query->set(
'meta_key' => 'my_flag',
'meta_value => true,
);
}
}
add_action( 'pre_get_posts', 'filter_my_posts' );
祝你好运,请测试并让我知道发生了什么