检查URI(POST、存档等)上的内容

时间:2016-05-11 作者:user2791747

是否有一种方法或函数可以传入自定义uri,如

uri-part/uri-part2
我们可以查一下这个地址下面是什么?

我想检查uri是否承载帖子、页面、存档、类别、标记、其他分类法、自定义帖子类型存档或自定义?

1 个回复
SO网友:kaiser

从url检索查询的“类型”:前面的建议如链接答案中所述,有url_to_postid(). 这将为您获取该端点处对象的ID。长话短说,此函数将只返回ID,然后运行新的\\WP_Query 从DB获取post类型对象并最终返回URl–如果有,如果是is_singular (一篇文章、一页)。所以这个函数并没有真正的帮助。

如评论中所述,还有:

$object = get_page_by_path( 
    \'path/endpoint\', 
    OBJECT|ARRAY_N|ARRAY_A,
    [ \'post\', \'page\', \'custom_post_type\', \'…\' ]
);
将运行以下查询:

$sql = "
    SELECT ID, post_name, post_parent, post_type
    FROM $wpdb->posts
    WHERE post_name IN ( $in_string )
        AND post_type IN ( $post_types_string )
";
再说一次:没有帮助。

要查询的WordPress Url:幕后

-------     --------------     -------------
| URl | --> | Query Vars | --> | \\WP_Query |
-------     --------------     -------------
正如@TheDeadMedic所提到的WP::parse_request() 它发挥了所有的魔力:

检索所有查询变量时,该方法实际上会填充一个关联数组:WP::$query_vars:

WP::$query_vars = [
    // $_POST or $_GET or query string variables `foo=bar&baz=dragons`
    // `custom` is not the actual name. The key will be named as the var.
    \'custom\'    => [],
    // An array of `$postTypeObject->query_var`s
    // Only those which are publicly queryable
    \'post_type\' => [],
    // Only publicly queryable taxonomies
    \'taxonomy\'  => [],
    \'term\'      => [],
    \'name\'      => [],
    \'error\'     => [],
    // …
];
在该方法的末尾,您有两个过滤器。第一个是:

$this->query_vars = apply_filters( \'request\', $this->query_vars );
其中存在上述阵列。现在,您可以开始确定URl提供的响应类型:

add_filter( \'request\', function( Array $vars ) {
    // do whatever you need to do, depending on $vars in here
    return $vars;
} );
一些示例var_dump( $vars ):

基于日期的存档:

array (size=2)
  \'year\' => string \'2016\' (length=4)
  \'monthnum\' => string \'04\' (length=2)
分类存档:

array (size=1)
  \'category_name\' => string \'alignment\' (length=9)
层次分类法子项:

array (size=1)
  \'category_name\' => string \'parent-category/child-category-05\' (length=33)
发布单个视图–粘性与默认值相同:

array (size=2)
  \'page\' => string \'\' (length=0)
  \'name\' => string \'sticky\' (length=6)

相关推荐

我突然得到了对未定义函数wp_parse_list()的调用

我今天早上醒来,发现以下错误:致命错误:未捕获错误:调用/app/public中未定义的函数wp\\u parse\\u list()。已生成/wp包括/类wp注释查询。php:485堆栈跟踪:#0/应用程序/公共。已生成/wp包括/类wp注释查询。php(395):WP\\u Comment\\u Query->get\\u Comment\\u ids()\\1/app/public。已生成/wp包括/类wp注释查询。php(346):WP\\u Comment\\u Query->get