检查地址网址以检查它是否有端点
问题描述:
是否有可能找出当前的WordPress网址是否为端点页面?检查地址网址以检查它是否有端点
- 漂亮的永久链接都在使用
- 可以迟到问,wp_head后,但前面是更好
只有使用:
global $wp_query;
isset($wp_query->query_vars['articles'])
是不工作正确。我不能接受这个答案。请没有链接。
它似乎更像这个问题。上面的例子returns true
在slu is为'articles'
的档案页上,或者当使用此slu or的单独页面或使用'articles'
的另一个独特页面的自定义帖子类型不是重写规则端点“指向目标”时。
注意:它也returns true
如果有人有set_query_var('articles', $articles)
将它传递到模板范围。 (否则,提供的功能低于确实工作,直到我偶然发现了模板文件插件)。
该问题在其他示例中仍然存在,如果在set_query_var()
中设置了变量,则为“位置”或“地址”。
遍历数据库中的所有post_name
仅返回帖子和页面slu to以从检查部分“删除”。自定义归档的重写规则不在数据库中。
从AMP页面开始,端点可能位于url的开头或末端,因此定位条件检查也不起作用。
唯一的帮助到目前为止,这是函数发现某处(板缺):
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;
}
但似乎它有检查重写规则以及排除存档/注册分类蛞蝓。
对此有任何可能的输入?
答
也许该功能需要用get_post_type_archive_link
逻辑进行扩展。不知道提前发布的类型。检查if ($post_type_obj->rewrite['with_front']) $struct = $wp_rewrite->front . $struct else $struct = $wp_rewrite->root . $struct;
但请,其他人提供更具体的答案。这只是一个提示。对不起,这是一个评论,而不是一个答案。不要怀念。
这真的很有趣可以解决 –