我有一个奇怪的错误,我创建了一个自定义帖子类型,开始在其中创建帖子,当我返回到WP Admin页面列出了该自定义帖子类型的所有帖子时,没有找到帖子。即使列表上方的计数器列出了7个找到的帖子。
我在我的网站上有另一个自定义帖子类型,设置完全相同(除了名称),也可以正常工作。
以前有人遇到过这个bug吗?
编辑:我找到了问题所在,但现在不知道如何解决。是的,在使用pre\\u get\\u posts来更改不相关的查询时,它只作用于post类型的pix\\u事件,因此它会破坏除事件之外的所有自定义post类型。
我想我错过了一次违约申报,但在这种情况下我找不到应该申报的内容。
function pix_change_query( $query ) {
if ( is_archive(\'pix_events\') ) {
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'meta_key\', \'date_work\' );
$query->set( \'meta_type\', \'DATE\' );
$query->set( \'order\', \'ASC\' );
$query->set( \'meta_query\', array(
array(
\'key\'=>\'date_work\',
\'compare\'=>\'>=\',
\'value\'=>date(\'Ymd\'),
\'type\'=>\'DATETIME\',
)
) );
}
}
add_filter( \'pre_get_posts\', \'pix_change_query\' );
最合适的回答,由SO网友:Fredy31 整理而成
我的pre-get-posts函数发生了横向变化。我的条件是申请所有档案,而不仅仅是事件档案。这是正确的代码。请注意,is\\u post\\u type\\u存档。
function pix_change_query( $query ) {
if ( is_post_type_archive(\'pix_events\') && $query->is_main_query() ) {
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'meta_key\', \'date_work\' );
$query->set( \'meta_type\', \'DATE\' );
$query->set( \'order\', \'ASC\' );
$query->set( \'meta_query\', array(
array(
\'key\'=>\'date_work\',
\'compare\'=>\'>=\',
\'value\'=>date(\'Ymd\'),
\'type\'=>\'DATETIME\',
)
) );
return;
}
}