web-dev-qa-db-fra.com

`post_type` =>` any` ne me donne pas mon message personnalisé

J'utilise Roots Bedrock + Sage 9 Beta 3. J'ai créé une publication personnalisée de type lp que je souhaite définir comme page d'accueil. Voici le code que j'utilise:

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' );

J'ai installé mpress-custom-front-page mais il ne semble pas voir ma page de destination.

Donc, avec quelques recherches, j'ai remarqué qu'il utilise get_posts() pour obtenir des publications avec post_type = 'any'.

La requête qu'il envoie est la suivante:

$queried_post = get_posts([
  'posts_per_page' => - 1,
  'orderby'        => 'title',
  'order'          => 'ASC',
  'post_type'      => 'any',
  'post_status'    => 'publish',
]);

Cette requête renvoie tous les messagessauf/ mes types de messages personnalisés:

 enter image description here 

Si je refais cette requête exacte, mais que je règle post_type sur 'lp', je reçois mon message, pas de problème:

 enter image description here 

Pourquoi any ne trouverait-il pas mon type de message personnalisé?

2
Martin

Parce que lorsque vous enregistrez votre type de message, vous avez 'exclude_from_search' => true

get_posts() ne fait que passer cela à WP_Query. Dans les définitions de paramètre pour WP_Query , il est indiqué:

'any' - récupère n'importe quel type, à l'exception des révisions et des types avec'exclude_from_search' défini sur true.

1
hwl