`post_type`=>`any`没有提供我的自定义帖子

时间:2017-08-01 作者:Martin

我使用的是根基岩+鼠尾草9 Beta 3。我已经创建了一个类型为的自定义帖子lp 我想设置为我的主页。下面是我使用的代码:

function cptui_register_my_cpts_lp() {

    /**
     * Post Type: Landing Pages.
     */

    $labels = array(
        "name"          => __( \'Landing Pages\', \'sage\' ),
        "singular_name" => __( \'Landing Page\', \'sage\' ),
    );

    $args = array(
        "label"               => __( \'Landing Pages\', \'sage\' ),
        "labels"              => $labels,
        "description"         => "Pages without menus and/or totally custom layouts.",
        "public"              => true,
        "publicly_queryable"  => true,
        "show_ui"             => true,
        "show_in_rest"        => false,
        "rest_base"           => "",
        "has_archive"         => false,
        "show_in_menu"        => true,
        "exclude_from_search" => true,
        "capability_type"     => "post",
        "map_meta_cap"        => true,
        "hierarchical"        => false,
        "rewrite"             => [ "slug" => "lp", "with_front" => true ],
        "query_var"           => true,
        "menu_icon"           => "dashicons-welcome-widgets-menus",
        "supports"            => [ "title", "thumbnail", "excerpt" ],
    );

    register_post_type( "lp", $args );

}

add_action( \'init\', \'cptui_register_my_cpts_lp\' );
我已安装mpress-custom-front-page 但它似乎没有看到我的登录页。

所以,通过一些挖掘,我注意到它使用get_posts() 获取帖子的步骤post_type = \'any\'.

它发送的查询是这样的:

$queried_post = get_posts([
  \'posts_per_page\' => - 1,
  \'orderby\'        => \'title\',
  \'order\'          => \'ASC\',
  \'post_type\'      => \'any\',
  \'post_status\'    => \'publish\',
]);
此查询返回除我的自定义帖子类型之外的所有帖子:

enter image description here

如果我重做这个精确的查询,但是post_type\'lp\' 然后我得到了我的帖子,没问题:

enter image description here

为什么会any 找不到我的自定义帖子类型

1 个回复
最合适的回答,由SO网友:hwl 整理而成

因为在注册帖子类型时\'exclude_from_search\' => true

get_posts() 只是把它传给WP_Query. 在parameter definitions for WP_Query 它指出:

“any”-检索除修订和类型之外的任何类型\'exclude_from_search\' set to true.

结束

相关推荐

FrontPage管理栏消失

我在一个多站点网络上。最近,我的frontpage管理栏消失了,但仍在后端显示。我禁用了所有插件,将主题也更改为210和212,但没有成功。但当我将插件文件夹的名称更改为其他名称时,它开始显示,但当我在不更改插件文件夹名称的情况下停用所有插件时,它不会显示。我认为网络禁用所有插件和/或更改插件文件夹名称是同一回事,所以它应该通过两种方式工作。但管理栏只显示当我将插件文件夹名称更改为其他名称时,而不是通过禁用网络范围内的所有插件。请尽快帮助。