Fügen Sie sowohl den Standard- als auch den benutzerdefinierten Posttyp in die Abfrage ein, die in pre_get_posts geändert wurde

Ich möchte den benutzerdefinierten Beitragstyp auf der Autor-Archivseite einfügen. Ich habe die in diesem Beitrag besprochene Methode ausprobiert:

Einschließlich post_type = ‘wiki’ in Autorenarchiven

add_action( 'pre_get_posts', 'custom_post_author_archive' ); function custom_post_author_archive( &$query ) { if ( $query->is_author ) { $query->set( 'post_type', 'custom_name' ); remove_action( 'pre_get_posts', 'custom_post_author_archive' ); // run once! } } 

Bei dieser Methode werden nur die custom_name-Beiträge abgefragt. Ich möchte sowohl die custom_name Beiträge als auch die normalen Posts abfragen.

Welche Änderungen muss ich machen?

Solutions Collecting From Web of "Fügen Sie sowohl den Standard- als auch den benutzerdefinierten Posttyp in die Abfrage ein, die in pre_get_posts geändert wurde"

Wie Kaiser erwähnte, kann der Parameter post_type ein Array von Post-Typen akzeptieren. Wenn Sie die function so is_main_query() , dass sie is_main_query() , um den Filter auf die “main” is_main_query() zu beschränken, würde der Code wie is_main_query() aussehen:

 add_action( 'pre_get_posts', 'custom_post_author_archive' ); function custom_post_author_archive( $query ) { if ( is_main_query() && is_author() ) { set_query_var( 'post_type', array('post','custom_post') ); } } 

Einfach gesagt, bezieht sich das $query Argument in pre_get_posts auf die WP_Query class / das Objekt, wie Sie im core sehen können .

 do_action_ref_array( 'pre_get_posts', array( &$this ) ); 

Das bedeutet, dass alle Callbacks / Aktionen, die an den Hook angehängt sind, genau dasselbe tun können wie new WP_Query( [ etc. ] ); tun könnte. Daher können Sie auch ein Array von Post-Typen verwenden .