是否有可能找出当前的Wordpress网址是否为端点网页?
仅使用:
global $wp_query;
isset( $wp_query->query_vars['articles'] )
无效正确无误。我不能接受这个答案。请不要链接。
似乎更多地涉及到这个问题。上面的例子returns true
在slug为'articles'
的存档页面上,或者使用此slug或单页名为'articles'
的自定义帖子类型或使用'articles'
的其他独特slug时这不是重写规则端点“指向目标”。
注意:如果有人returns true
将其传递到模板范围,也会set_query_var('articles', $articles)
。 (否则,提供的功能 确实有效,直到我偶然发现模板文件插件)。
问题在其他示例中仍然存在,如果变量在set_query_var()
中设置,则为“位置”或“地址”。
遍历所有post_name
的数据库只会将检索部分中的post和pages slugs返回到“remove”。自定义归档的重写规则不在db。
从AMP页面开始,端点可能位于网址的开头或结尾,因此定位条件检查也不起作用。
到目前为止唯一的帮助就是找到某个地方(切割):
function is_endpoint(){
if(!get_option('permalink_structure')) return false;
global $wp;
if(!$wp->request) return false;
$parts = explode('/', $wp->request);
if(empty($parts)) return false;
// https://codex.wordpress.org/Reserved_Terms
$reserved = array(
'revision',
'nav_menu_item',
'custom_css',
'customize_changeset',
'action',
'attachment',
'attachment_id',
.. AND ALL OTHER FROM CODEX DOCS ...
'year'
);
//global $wp_query (clashes with added stuff);
global $wp_the_query;
foreach($parts as $maybe_endpoint){
if(!$maybe_endpoint || !trim($maybe_endpoint)) continue;
$maybe_endpoint = trim($maybe_endpoint);
if(post_type_exists($maybe_endpoint)) continue;
if(in_array($maybe_endpoint, $reserved)) continue;
/** if(is_slug($maybe_endpoint)) continue;**/ // MAYBE SOMETHING LIKE THIS?
/* Final conditional, all other possibilities removed: */
if(isset($wp_the_query->query_vars[$maybe_endpoint])) {
return true;
break;
}
}
return false;
}
但它似乎必须检查重写规则以及排除存档/注册的分类标准。
对此有什么可能的输入?
答案 0 :(得分:0)
可能需要使用get_post_type_archive_link
逻辑扩展该函数。不知道前面的帖子类型。检查if ( $post_type_obj->rewrite['with_front'] ) $struct = $wp_rewrite->front . $struct else $struct = $wp_rewrite->root . $struct;
但请其他人提供更具体的答案。这只是一个提示。对不起,这是评论,而不是答案。不要做。