Wie man benutzerdefinierte Beitragstypen auf die Titelseite legt

Ich versuche, ein Portfolio mit WordPress mit einem benutzerdefinierten Post-Typ zu erstellen, um meine Projekte anzuzeigen. Jedes Projekt, das ich auf meiner statischen Titelseite mit einem vorgestellten Bild als Thumbnail anzeigen möchte, und durch Klicken auf ein Thumbnail, würde mich direkt zum Projekt führen.

Wie poste ich benutzerdefinierte Beitragstypen auf der statischen Titelseite? Ich möchte nur die letzten 6 Beiträge anzeigen, und dann habe ich über meine Navigation einen Link zum Rest.

Solutions Collecting From Web of "Wie man benutzerdefinierte Beitragstypen auf die Titelseite legt"

Wenn Sie also einen CPT namens wpse_242473_custom_post_type registriert wpse_242473_custom_post_type , können Sie damit 6 aktuelle Posts dieses Typs auf Ihrer statischen Startseite (oder an jedem anderen Ort) wpse_242473_custom_post_type . Sie können einen Shortcode oder ein Template-Tag verwenden und die function sollte für beide funktionieren.

Es ist eine Modifikation von Code, den ich in vielen Websites verwende. Setzen Sie es in die functions.php Ihres Themes. Ändern Sie den HTML-Code, den ich für Sie verwendet habe, natürlich.

Ich habe eine Wendung hinzugefügt, die ich für eine Weile ausprobieren wollte. Wenn es an dir reibt, lass es mich wissen und ich werde es richtig testen. Was ich hinzugefügt habe, ist eine ganze Reihe von optionalen Argumenten, die die gleiche function funktionieren lassen, hoffe ich, sowohl für einen Shortcode als auch für ein Template-Tag. Sie können [recentposts] entweder auf einer beliebigen Seite in den visuellen Editor [recentposts] oder Sie können < ?php wpse_242473_recent_posts(); ?> < ?php wpse_242473_recent_posts(); ?> in eine beliebige Vorlage Ihres Themas.

Um es in die Vorlage für Ihre statische Titelseite front-page.php , bearbeiten Sie (oder erstellen Sie) die Vorlage front-page.php . Dies wird automatisch für Ihre statische Titelseite ausgewählt, ohne dass Sie diese im Seitenbearbeitungsbildschirm auswählen müssen.

 function wpse_242473_recent_posts( $atts = null, $content = null, $tag = null ) { $out = ''; $args = array( 'numberposts' => '6', 'post_status' => 'publish', 'post_type' => 'wpse_242473_custom_post_type' , ); $recent = wp_get_recent_posts( $args ); if ( $recent ) { $out .= '
'; $out .= '

Recent Projects

'; $out .= '
'; foreach ( $recent as $item ) { $out .= ''; $out .= get_the_post_thumbnail( $item['ID'] ); $out .= ''; } $out .= '
'; } if ( $tag ) { return $out; } else { echo $out; } } add_shortcode( 'recentposts', 'wpse_242473_recent_posts' );

Es ist ein einfaches Abrufen der gewünschten Posts.

Die foreach Schleife erstellt Ihren HTML- foreach , und am Ende gibt der bedingte foreach entweder den HTML-Code zurück, wenn Sie einen Shortcode verwendet haben, oder er wiederholt ihn, wenn Sie die function als Template-Tag aufrufen.

Was viele Artikel im Web nicht zeigen, ist das dritte Argument, das an alle Shortcode-Handler weitergegeben wird. Wenn Sie den Shortcode verwenden, enthält er den Shortcode-Namen, sodass ein Handler theoretisch mehrere Shortcodes verarbeiten könnte. In diesem Fall verwenden wir es, um festzustellen, ob die function tatsächlich als Kurzwahl-Handler aufgerufen wurde oder nicht.

Edit: Diese Antwort wurde geschrieben, bevor ich erkannte, dass das OP eine statische Titelseite hat. Ich habe es hier gelassen, falls es für irgendjemand anderen nützlich ist, und fügte eine zweite Antwort für den Fall der statischen Titelseite hinzu.

Dies fügt Ihren benutzerdefinierten Post-Typ zur Hauptschleife der Homepage hinzu:

 add_action( 'pre_get_posts', 'wpse_242473_add_post_type_to_home' ); function wpse_242473_add_post_type_to_home( $query ) { if( $query->is_main_query() && $query->is_home() ) { $query->set( 'post_type', array( 'post', 'your_custom_post_type_here') ); } } 

Durch die Überprüfung von is_home wir sicher, dass wir uns auf der Hauptseite des is_main_query befinden und is_main_query stellt sicher, dass wir nicht versehentlich irgendwelche sekundären Schleifen beeinflussen.

Wenn Sie nur Ihren benutzerdefinierten Posttyp und keine normalen Posts möchten, entfernen Sie den post aus dem Array der Post-Typen.

Es gibt einige falsche Artikel im Web, die diese Aktion als Filter behandeln. Es ist nicht, es übergibt die Abfrage als Verweis, so dass Sie Abfrageargumente direkt festlegen können.

Sie können die folgenden Schritte ausführen:
1) Erstellen Sie eine Vorlage Ihres CPT (Custom post type)
2) Fügen Sie die folgenden Codes in diese Vorlage ein; Ersetzen Sie CPT durch Ihren CPT.
3) Öffnen Sie eine neue Seite und veröffentlichen Sie eine neue Seite, indem Sie diese Vorlage auf der rechten Seite auswählen.
4) Schließlich gehen Sie zu Einstellung, klicken Sie dann auf lesen und wählen Sie dann die erste Seite unter A statische Seite.

Codes:

 < ?php /** *Template Name:CPT * @package CPT * @since CPT 1.0 */ get_header(); global $paged; if( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); } elseif( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; } $args = array( 'post_type' => 'CPT', 'posts_per_page'=>6, 'paged' => $paged, ); $query = new WP_Query($args); ?> < ?php if ( $blog_query->have_posts() ) : ?> < ?php while ( $query->have_posts() ) : $query->the_post(); ?> 
< ?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) {?> < ?php the_post_thumbnail(); ?> < ?php } ?>
< ?php endwhile; ?> < ?php endif; ?> < ?php get_footer(); ?>