webentwicklung-frage-antwort-db.com.de

`post_type` =>` any` gibt mir nicht meinen benutzerdefinierten Beitrag

Ich verwende Roots Bedrock + Sage 9 Beta 3. Ich habe einen benutzerdefinierten Beitrag vom Typ lp erstellt, den ich als Startseite festlegen möchte. Hier ist der Code, den ich benutze:

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

Ich habe mpress-custom-front-page installiert , aber meine Zielseite wird anscheinend nicht angezeigt.

Also bemerkte ich beim Graben, dass es get_posts() verwendet, um Beiträge mit post_type = 'any' zu erhalten.

Die Abfrage, die es sendet, ist so:

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

Diese Abfrage gibt alle Posts mit Ausnahme meiner benutzerdefinierten Post-Typen zurück:

enter image description here

Wenn ich genau diese Abfrage wiederhole, aber post_type auf 'lp' setze, erhalte ich meinen Beitrag, kein Problem:

enter image description here

Warum konnte any meinen benutzerdefinierten Beitragstyp nicht finden?

2
Martin

Denn bei der Registrierung Ihres Beitragstyps haben Sie 'exclude_from_search' => true

get_posts() übergibt das nur an WP_Query. In den Parameterdefinitionen für WP_Query heißt es:

'any' - ruft jeden Typ mit Ausnahme von Revisionen und Typen ab, bei denen 'exclude_from_search' auf true gesetzt ist.

1
hwl