Seite zum ersten Beitrag im benutzerdefinierten Beitragstyp redirect

Ich habe eine Seite, nennen wir sie “Künstler”, die eine Liste von Beiträgen in einem benutzerdefinierten Beitragstyp anzeigt, wiederum “Künstler”.

Wie kann ich Leute, die die Artists-Seite besuchen, auf den ersten Beitrag im Posts “artists” redirect?

Solutions Collecting From Web of "Seite zum ersten Beitrag im benutzerdefinierten Beitragstyp redirect"

Dies setzt voraus, dass Ihre Seite “Artists” eine ID von 10 hat, ändern Sie diese also bei Bedarf.

Sie können das $args Array auch ändern, wenn Sie Ihren Anforderungen bei Bedarf besser entsprechen möchten. Hier ist der Codex für WP_Query , der zeigt, dass Sie Parameter verwenden können.

Schließlich muss dies ganz oben auf Ihrer Seite (vor jeder Ausgabe) erfolgen, sonst erhalten Sie einen Fehler, wenn die Kopfzeileninformationen bereits ausgegeben wurden.

 if(is_page(10)) : $args = array( 'posts_per_page' => 1, 'post_type' => 'artists' ); /** Get the posts that match and grab the URL of the first post */ $posts = get_posts($args); $redirect_url = get_permalink($posts[0]->ID); /** Redirect to the specified URL */ wp_redirect($redirect_url); exit; endif; 

Wenn Sie eine bestimmte Seite auf den ersten Beitrag umlenken möchten, empfehle ich Ihnen , in / u / gmazzap ‘s fantastische Antwort bezüglich der Zuordnung von Seitenvorlagen als Beitragstyp – Archive zu suchen.

Wenn Sie stattdessen das Post-Archiv auf den ersten Post redirect möchten, können Sie Folgendes verwenden:

 /** * Redirect post type archive page to first post * * @return void */ function wpse91590() { if( is_post_type_archive( 'artists' ) ) { // Grab the first artist post ID and store it in an array $posts = get_posts( array( 'post_type' => 'artists', 'posts_per_page' => 1, 'fields' => 'ids', 'orderby' => array( 'menu_order' => 'ASC', 'post_date' => 'DESC' ), ) ); // If our array isn't empty, redirect if( ! empty( $posts ) ) { wp_redirect( get_permalink( $posts[0] ), 301 ); // Variable $posts[0] holds the artist post ID exit(); } } } add_action( 'template_redirect', 'wpse91590' ); 

Die Idee ist, dass wir nicht das gesamte Post-Objekt benötigen, also greifen wir einfach auf die ID und leiten sie um. Schließlich verlassen wir das Skript, um eine weitere Ausführung zu vermeiden.