Mehrere CSS-Body-classn zu bestimmten Seiten-IDs – ist das möglich?

Hier ist meine Herausforderung …

Ich habe 52 Seiten, die ein Hintergrundbild in voller Breite erfordern, das über einen .css-Stil gerendert wird.

Also, was ich wissen werde, sind alle Seiten-ID-Nummern. Der folgende Code ist meiner Meinung nach eine saubere Art zu tun, was ich zu erreichen versuche.

Meine Frage ist, anstatt 52 Instanzen des untenstehenden Codes zu haben, ist es möglich, einfach alle Seiten-IDs und $classes von ‘css’ getrennt durch Kommas zu platzieren?

 add_filter('body_class','wpsites_specific_page_body_class'); /** * @author Brad Dalton - WP Sites * * @link http://wpsites.net/web-design/style-images-custom-body-class/ */ function wpsites_specific_page_body_class($classes) { if(is_page('007') ) { $classes[] = 'demo-class'; return $classes; } } 

Danke für die Richtung.

Solutions Collecting From Web of "Mehrere CSS-Body-classn zu bestimmten Seiten-IDs – ist das möglich?"

Ich würde es flexibler gestalten, indem ich die fraglichen Seiten mit Post-Meta- oder benutzerdefinierten Taxonomien markiere . Auf diese Weise müssen Sie keinen PHP-Code ändern, um auszuwählen, welche Seiten individuell gestaltet werden sollen.

Hier ein Beispiel, wenn wir die Seiten mit dem benutzerdefinierten Feld ” wpse-layout mit dem Wert 1 markieren (vorausgesetzt, dass mehr Layout-Optionen vorhanden sind):

 add_filter( 'body_class', function( $classes ) { // Only target pages if( ! is_page() ) return $classes; // Get the 'wpse_layout' post meta value for the current page $layout = get_post_meta( get_queried_object_id(), 'wpse_layout', true ); if( empty( $layout ) ) return $classes; // Inject the 'wpse-layout-1' body class, // if the custom field 'wpse-layout' has the value 1 $classes[] = sprintf( 'wpse-layout-%d', $layout ); return $classes; } ); 

Dies könnte auf verschiedene Arten weiter angepasst werden, z. B. mit einer benutzerdefinierten Benutzeroberfläche.

Versuche dies.

 function wpsites_specific_page_body_class($classes) { global $post; $posts = [7=>'demo-class',8=>'another-class'] if (array_key_exists($post->ID,$posts)) $classes[] = $posts[$post->ID]; return $classes; } } 

Sie können dem $ posts-Array eine beliebige Anzahl von Posts hinzufügen. Es wird die class festlegen, die der Post-ID zugewiesen ist.

Zuerst erhalten Sie alle Seiten-ID Klicken Sie hier für weitere Informationen

 add_filter('body_class','wpsites_specific_page_body_class'); /** * @author Brad Dalton - WP Sites * * @link http://wpsites.net/web-design/style-images-custom-body-class/ */ function wpsites_specific_page_body_class($classes) { $page_ids= get_all_page_ids(); if(is_page($page_ids) ) { $classes[] = 'demo-class'; return $classes; } } 

Ich würde sicherlich mit Birgirs Antwort gehen, es ist der richtige Ansatz. Aber da Sie gefragt haben, was Sie tun möchten, können Sie ein Array verwenden.

Speichern Sie Ihre Seiten-IDs in einem Array und führen Sie dann eine Bedingung aus:

 $ids = array( '1', '23', '53', '99' ... '1001' ); if( is_page( $ids ) ) { // Your code here } 

Die function is_page() akzeptiert entweder eine Ganzzahl, eine Zeichenfolge oder ein Array.