如果您想使用post meta设置在首页上显示哪些帖子,那么我建议使用单独的meta\\u键保存设置。所以与其把它推到your_fields
使用自己的密钥保存。
这意味着修改你的metabox内容,
<input type="checkbox" name="show_on_front_page" value="true"
请相应地修改您的metabox保存框。
那么您应该能够使用get_posts
就像这样,
$posts = get_posts(array(
\'posts_per_page\' => -1,
\'post_type\' => \'cv\',
\'meta_key\' => \'show_on_front_page\',
\'meta_value\' => \'true\'
));
但就在昨天,我在另一条帖子上看到了汤姆·诺威尔先生的评论,他说这是一种效率很低的设置头版帖子的方式。在更大的站点上,在最坏的情况下,这可能会导致站点服务器停机。
您最好使用(私有)自定义分类法,将要在头版上显示的帖子分配给该分类法。从数据库中获取具有特定分类法的帖子是一种更快、更有效的方式。
从诺威尔先生的博客上,https://tomjn.com/2018/03/16/utility-taxonomies/
设置自定义分类,
function tomjn_utility_taxonomy() {
$args = array(
\'label\' => __( \'Internal Markers\', \'tomjn\' ),
\'public\' => false,
\'rewrite\' => false,
\'show_ui\' => true, // you\'d need this if you want to show the taxonomy metabox on the post edit screen
);
register_taxonomy( \'utility\', \'post\', $args );
}
add_action( \'init\', \'tomjn_utility_taxonomy\', 0 );
自动发布到首页,
function tomjn_auto_add_to_home( $post_id ) {
wp_set_object_terms( $post_id, \'show_on_homepage\', \'utility\', true );
}
add_action( \'publish_post\', \'tomjn_auto_add_to_home\' );
调整主页查询
function tomjn_only_show_home( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'utility\', \'show_on_homepage\' );
}
}
add_action( \'pre_get_posts\', \'tomjn_only_show_home\' );
请参阅博客文章以获取更详细的解释。