我已经使用CPT UI在一个房地产网站上创建了一些自定义帖子类型,其中一种叫做“团队”。直到最近,一切都很顺利。。。旧的团队条目按预期显示在列表/归档视图和单个视图中。然而,我们最近添加了一个新的团队成员条目,发现只有单个视图会导致“未找到页面”错误。经过更多测试,结果表明,“团队”post类型的任何新条目都只会在单个视图中导致错误——它们会在存档视图中弹出。
Just to be clear: 旧的团队条目在存档和单个视图中都会按应有的方式显示。任何新的团队条目都会显示在存档视图中,但会导致单个视图中出现404
我尝试使用普通的永久链接设置、flush\\u rewrite\\u rules()重新保存永久链接设置,并检查了是否存在任何段塞冲突。我完全被难住了。
UPDATE: 按照建议进行一些调试后(谢谢!)我想我已经发现了问题。。。页面请求正在查询变量中使用新条目中不存在的旧元键。不知何故,WordPress在内部使用了meta键\'agent_last_name\'
应在何时使用\'agent_alpha_name\'
. 我想我需要一种方法来强制刷新?
SO网友:Addison Hall
所以我深入挖掘了我的孩子主题,发现我其实是罪魁祸首。。。在早期的某个时候,我编写了一个函数,使用pre_get_posts
在上强制自定义排序顺序team
自定义帖子类型。以下是我发现的隐藏内容:
add_action(\'pre_get_posts\', \'gpc_agent_pre_get_posts\');
function gpc_agent_pre_get_posts( $query ) {
// do not modify queries in the admin
if( is_admin() ) {
return $query;
}
// only modify queries for \'agent\' post type
if( isset( $query->query_vars[\'post_type\'] ) && $query->query_vars[\'post_type\'] === \'team\' ) {
$query->set( \'orderby\', \'meta_value\' );
$query->set( \'meta_key\', \'agent_last_name\' );
$query->set( \'order\', \'ASC\' );
}
// return
return $query;
}
我把它去掉了,一切都很好。