Wie verwende ich einen benutzerdefinierten Beitragstyp als Startseite?

Ich möchte die Startseite einer Website als einen einzelnen Beitrag eines benutzerdefinierten Beitragstyps festlegen. Ich war in der Lage, die Anfrage für meine Titelseite zu einem benutzerdefinierten Beitragstyp- Archiv mit dem folgenden Code zu ändern (ursprünglich hier gepostet ):

function custom_front_page($wp_query){ if($wp_query->get('page_id')==get_option('page_on_front')){ $wp_query->set('post_type','album'); $wp_query->set('page_id',''); // empty // fix conditional functions $wp_query->is_page = false; $wp_query->is_archive = true; $wp_query->is_post_type_archive = true; } } add_action('pre_get_posts','custom_front_page'); 

Ersetzen

 $wp_query->is_archive = true; $wp_query->is_post_type_archive = true; 

mit

 $wp_query->is_single = true; 

ruft die single-album.php Vorlage so auf, wie ich möchte, aber es gibt immer noch ALLE Beiträge in der Kategorie “Alben” statt nur eine zurück.

Hinzufügen

 $wp_query->set('posts_per_page',1); 

hat keine Wirkung.

Was sollte ich stattdessen tun?

Bonusfrage: Gibt es irgendwo einen guten Hinweis darauf, wie man die query so manipuliert?

Solutions Collecting From Web of "Wie verwende ich einen benutzerdefinierten Beitragstyp als Startseite?"

Der einfachste Weg, einen einzelnen Beitrag auf der ersten Seite anzuzeigen, wäre:

 global $wp_query; $wp_query = new WP_Query( array( 'p' => 'POST ID HERE' ) ); include( 'single-POSTTYPE.php' ); 

Ich musste das gleiche für einen Kunden tun und ich habe zwei Ressourcen gefunden, die mir geholfen haben:

Wie verwenden Sie einen CPT als Standard-Homepage?

http://wpquestions.com/question/show/id/2944

Das ist die Lösung, die für mich funktioniert hat:

 function add__to_dropdown( $pages, $r ) { if('page_on_front' == $r['name']) { $args = array( 'post_type' => '' ); $items = get_posts($args); $pages = array_merge($pages, $items); } return $pages; } add_filter( 'get_pages', 'add__to_dropdown' ); function enable_front_page_( $query ) { if('' == $query->query_vars['post_type'] && 0 != $query->query_vars['page_id']) $query->query_vars['post_type'] = array( 'page', '' ); } add_action( 'pre_get_posts', 'enable_front_page_' ); 

Ersetzen einfach durch Ihren benutzerdefinierten Post-Typ-Computernamen

https://wordpress.org/plugins/mpress-custom-front-page/ scheint die korrekte Logik in einer sauberen Art und Weise zu implementieren.

Github https://github.com/wpscholar/mpress-custom-front-page/