Mit dem WordPress Theme "Twenty Fourteen" werden einige Formatvorlagen für Beiträge mitgeliefert. So z.B. kann man Beiträge in Form einer Kurzmitteilung, Bilder, Zitate usw. veröffentlichen. Ist in WordPress eingestellt, dass die Startseite die letzten Beiträge anzeigt, werden standardmäßig alle Beiträge (auch mit unterschiedlichen Formatvorlagen) auf der Hauptseite angezeigt. Möchte man auf der Hauptseite z.B. Beiträge mit bestimmten Formatvorlagen nicht anzeigen, so muss die WordPress-Anfrage, welche die einzelnen Beiträge zur Anzeige ermittelt, modifiziert werden.
Mit folgender Funktion in der themeneigenen Datei functions.php werden z.B. alle Beiträge mit der Formatvorlage "Kurzmitteilung" ausgeblendet:
function search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
$tax_query = array( array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-aside' ),
'operator' => 'NOT IN',
) );
$query->set( 'tax_query' , $tax_query );
}
}
add_action('pre_get_posts','search_filter');
Mit obigem Code-Schnipsel wird festgelegt, dass die Funktion search_filter vor dem Sammeln der anzuzeigenden Beiträge aufgerufen wird (pre_get_posts).
Die wichtigen Einstellungen sind hier der Operator "NOT IN" und die Angabe der Formate (unter terms), welche nicht angezeigt werden sollen.
Das Theme "Twenty Fourteen" definiert folgende Formatvorlagen:
- post-format-aside (Kurzmitteilung)
- post-format-audio (Audio)
- post-format-gallery (Galerie)
- post-format-image (Bild)
- post-format-link (Link)
- post-format-quote (Zitat)
- post-format-video (Video)
Genau diese Formate können in die obige Funktion eingetragen werden, um diese Formatvorlagen von der Anzeige in der Hauptseite auszuschließen.
Für andere Themen als "Twenty Fourteen" können bei vorhandenem Zugang zur Datenbank über z.B. phpMyAdmin oder die Konsole die Namen der bereits verwendeten Formatvorlagen mit folgender Abfrage auf die WordPress-Datenbank ermittelt werden:
SELECT * FROM wp_terms where slug like 'post-format-%';
Die Namen der Formatvorlagen befinden sich dabei in der Spalte slug. Genau auf diese Spalte wird mit obiger Funktion ein Filter gesetzt ('field' => 'slug').