问题描述
get_posts();
get_posts([
'post_type' => 'meetings','post_status' => 'any'
]);
$posts = get_posts([
'post_type' => 'meetings','post_status' => 'any','ping_status' => 'any','suppress_filters' => true,'post_parent' => null
]);
当我创建新的“会议”帖子类型时,我可以确认它是使用以下状态创建的:
{
"ID":100,"post_author":"1","post_date":"2020-08-12 16:26:45","post_date_gmt":"2020-08-12 16:26:45","post_content":"","post_title":"Test","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"test-2","to_ping":"","pinged":"","post_modified":"2020-08-12 16:43:43","post_modified_gmt":"2020-08-12 16:43:43","post_content_filtered":"","post_parent":0,"guid":"http:\\/\\/esh.localhost\\/?post_type=meetings&p=100","menu_order":0,"post_type":"meetings","post_mime_type":"","comment_count":"0","filter":"raw"
}
register_post_type( 'meetings',[
'show_ui' => true,'labels' => array(
'name' => 'Meetings','singular_name' => 'Meeting','add_new' => 'New Meeting','all_items' => 'All Meetings','add_new_item' => 'New Meeting','edit_item' => 'Edit Meeting','new_item' => 'New Meeting','view_item' => 'View Meeting','search_items' => 'Search Meetings','not_found' => 'No meetings found','not_found_in_trash' => 'No Meetings found in trash','parent_item_colon' => 'Parent Meeting:',// 'parent' => 'eSupport',// 'menu_name' => 'eSupport'
),'show_in_graphql' => true,'hierarchical' => true,'graphql_single_name' => 'meeting','graphql_plural_name' => 'meetings','show_in_menu' => 'esh-sections'
]);
因此,有了这些帖子的详细信息,任何人都可以看到为什么get_posts可能始终返回空集吗?即使对于常规帖子(“ post_type” =>“全部”),它仍然为空。
$posts = get_posts([
'post_type' => 'meetings','posts_per_page' => -1
]);
dlog("Post type exists?",post_type_exists( 'meetings' ) );
dlog("posts",json_encode($posts));
输出:
[Wed Aug 12 13:09:49.732013 2020] [PHP7:notice] [pid 4371] [client ::1:60535] \nPost type exists?,referer: http://localhost:3000/dashboard
[Wed Aug 12 13:09:49.732072 2020] [PHP7:notice] [pid 4371] [client ::1:60535] \n1,referer: http://localhost:3000/dashboard
[Wed Aug 12 13:09:49.732105 2020] [PHP7:notice] [pid 4371] [client ::1:60535] \nposts,referer: http://localhost:3000/dashboard
[Wed Aug 12 13:09:49.732119 2020] [PHP7:notice] [pid 4371] [client ::1:60535] \n[],referer: http://localhost:3000/dashboard
解决方法
您应该使用post_status => any
$posts = get_posts([
'post_type' => 'meetings','post_status' => 'any','posts_per_page' => -1
]);
var_dump($posts);
,
抱歉,我有一个动作正在过滤返回值:
add_action('pre_get_posts','ESH\Meetings::get_meetings_by_owner' );
禁用这些功能可以让我看到这些帖子。抱歉造成混乱!