检查地址网址以检查它是否有端点

检查地址网址以检查它是否有端点

问题描述:

是否有可能找出当前的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; 
} 

但似乎它有检查重写规则以及排除存档/注册分类蛞蝓。

对此有任何可能的输入?

+0

这真的很有趣可以解决 –

也许该功能需要用get_post_type_archive_link逻辑进行扩展。不知道提前发布的类型。检查if ($post_type_obj->rewrite['with_front']) $struct = $wp_rewrite->front . $struct else $struct = $wp_rewrite->root . $struct;但请,其他人提供更具体的答案。这只是一个提示。对不起,这是一个评论,而不是一个答案。不要怀念。