web-dev-qa-db-ja.com

`post_type` =>` any`が私のカスタム投稿をくれていない

Roots Bedrock + Sage 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 をインストールしましたが、ランディングページが表示されないようです。

それで、少し掘り下げて、私はそれがpost_type = 'any'で投稿を得るためにget_posts()を使うことに気づきました。

送信するクエリは以下のとおりです。

$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が私のカスタム投稿タイプを見つけられないのはなぜですか?

2
Martin

あなたの投稿タイプを登録するときあなたは'exclude_from_search' => trueを持っているので

get_posts()は単にそれをWP_Queryに渡しています。 WP_Queryのパラメーター定義 には、次のように記述されています。

'any' - 'exclude_from_search'がtrueに設定されているリビジョンとタイプを除くすべてのタイプを取得します。

1
hwl