wordpress - Wordpress get_posts 总是返回 null,对于任何帖子类型,post_status=all 等
问题描述
一直在扯我的头发,无法在一个简单的查询中返回任何帖子:
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"
}
这是注册此自定义 post_type 的代码:
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' => 'all'),它仍然是空的。
如果有帮助,这里是确切的代码和输出:
$posts = get_posts([
'post_type' => 'meetings',
'post_status' => 'any',
'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
解决方案
啊,抱歉,我有一个过滤返回的操作:
add_action('pre_get_posts', 'ESH\Meetings::get_meetings_by_owner' );
禁用这些可以让我看到帖子。对困惑感到抱歉!
推荐阅读
- java - ActiveMQ 待处理消息
- python - 如何计算文本(.txt)文件的标准偏差?
- symfony - 使用 Symfony 4 Form 处理 PUT 请求
- swift - 从函数 Swift 4 返回结构
- kubernetes - kubectl apply --dry-run 行为怪异
- python - 使用 SMT-LIB 使用公式计算模块数量
- list - 如何修复我的代码中的错误('无法构造无限类型')以及如何使我的代码工作
- jenkins - 如何在詹金斯管道阶段更改变量值?
- regex-lookarounds - 将字符串的开头与lookbehind和命名组匹配
- angular - Ionic contenteditable keyup、keydown 事件无法正常工作(keyCode 229)