Voici mon défi ...
J'ai 52 pages qui nécessitent une image d'arrière-plan pleine largeur qui sera rendue via un style .css.
Donc, ce que je saurai, ce sont tous les numéros d’identification de page. Je crois que le code ci-dessous est une manière ordonnée de faire ce que je cherche à réaliser.
Ma question est, plutôt que d'avoir 52 instances du code ci-dessous, est-il possible de simplement placer tous les ID de page et $classes
de 'css' séparés par des virgules?
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;
}
}
Merci pour toutes les directions.
Je voudrais envisager de le rendre plus flexible en marquant les pages en question avec une taxinomie post méta ou personnalisée. De cette façon, vous n'avez pas besoin de changer un code PHP pour choisir les pages qui doivent avoir un aspect personnalisé.
Voici un exemple, si nous marquons les pages avec le champ personnalisé wpse-layout
avec la valeur 1
(en supposant qu'il puisse y avoir plus d'options de disposition):
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;
} );
Cela pourrait être ajusté de différentes manières, par ex. avec une interface utilisateur personnalisée.
J'irais certainement avec la réponse de Birgir, c'est la bonne approche. Mais depuis que vous avez demandé, ce que vous voulez faire peut être fait en utilisant un tableau.
Stockez vos identifiants de page dans un tableau, puis effectuez une opération conditionnelle:
$ids = array( '1', '23', '53', '99' ... '1001' );
if( is_page( $ids ) ) {
// Your code here
}
La fonction is_page()
accepte un entier, une chaîne ou un tableau.
Essaye ça.
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;
}
}
Vous pouvez ajouter un nombre quelconque de publications dans le tableau $ posts. Il définira la classe assignée à l'identifiant de poste.
d'abord obtenir tous les identifiant de page cliquez ici pour plus d'informations
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;
}
}