Codex tools: Log in / create account
WordPress Francophone
Page d'accueil francophone du Codex - WordPress en Français - Forum d'Entraide Francophone
Les Marqueurs Conditionnels peuvent être utilisés dans vos Thèmes pour décider du contenu à afficher sur une page spécifique ou comment ce contenu doit être affiché en fonction de conditions que remplit cette page. Par exemple, si vous voulez insérer un texte particulier au-dessus d'une série d'Articles, mais seulement sur la page principale de votre blog, avec le Marqueur Conditionnel is_home(), cela devient facile.
Ces Marqueurs sont en relation étroite avec la Hiérarchie des Modèles de WordPress.
Tous les Marqueurs Conditionnels testent si une condition est remplie, et retourne ensuite TRUE ou FALSE. Les conditions selon lesquelles les différents Marqueurs renvoient TRUE sont listées ci-dessous. Les paramètres acceptés par certains marqueurs sont également mentionnés.
Concerne les Articles qui sont affichés à l'unité (en général, utilise le fichier single.php des thèmes).
Cette section concerne les Pages WordPress, et pas n'importe quelle page générique de votre blog.
Malheureusement, il n'existe pas encore de fonction is_subpage() (pour tester si une page est une sous-page). On peut cependant, contourner ce problème :
Voir aussi is_archive() et Category Templates.
Voir auss is_archive() et Author Templates.
Voir aussi is_archive().
Voici des exemples pratiques qui montrent l'utilisation des Marqueurs Conditionnels.
Cet exemple montre comment utiliser is_single() pour un affichage spécifique à une page d'Article unitaire :
if (is_single())
{
echo 'This is just one of many fabulous entries in the ' . single_cat_title() . ' category!';
}
Si quelqu'un navigue sur le site en utilisant les liens Datés (les archives par exemple), le code qui suit affectera des couleurs différentes aux Articles en fonction de l'année :
<?php
// Début de la Boucle (The Loop)
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2 id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
<?php the_title(); ?></a></h2>
<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
<?php
// Affichage d'une page Datée ?
if (is_date())
{
if (date('Y') != get_the_date('Y'))
{
// cet Article a été publié une année antérieure
// donc, on affiche en utilisant la classe "oldentry"
echo '<div class="oldentry">';
} else {
echo '<div class="entry">';
}
} else {
echo '<div class="entry">';
}
the_content('Read the rest of this entry »');
?>
</div>
Cet exemple affichera des contenus différents dans votre Sidebar en fonction du type de page en cours d'affichage.
<!-- début de la sidebar -->
<div id="sidebar">
<?php
// Génération d'informations liées à la page affichée
if (is_home()) {
// Sur la home page, affichage des Catégories mères uniquement
echo "<ul>";
wp_list_cats('optionall=0&sort_column=name&list=1&children=0');
echo "</ul>";
} elseif (is_category()) {
// sur une page de catégorie, affichage de toutes les Catégories
echo "<ul>";
wp_list_cats('optionall=1&sort_column=name&list=1&children=1&hierarchical=1');
echo "</ul>";
} elseif (is_single()) {
// Sur une page d'Article unitaire, aucune Catégorie n'est affichée
} elseif (is_page()) {
// Affichage de page spécifiques
if (is_page('A Propos')) {
// Notre page A propos.
echo "<p>Ceci est ma page A propos !</p>";
} elseif (is_page('Colophon')) {
echo "<p>Ceci est la page d'information sur le blog " . bloginfo('version') . "</p>";
} else {
// Pour toutes les autres pages
echo "<p>Votez pour AmO !</p>";
}
} else {
// Affichage de tous les autres types de pages (archives, recherches, 404, etc)
echo "<p>Oo vous offre sa protection.</p>";
} // C'est tout !
?>
<form id="searchform" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div>
<input type="text" name="s" id="s" size="15" />
<input type="submit" value="<?php _e('Search'); ?>" />
</div>
</form>
</div>
<!-- fin de la sidebar -->
Lorsqu'un visiteur arrive sur une page d'erreur 404, cela peut être intimidant et inutile. En utilisant WordPress, vous pouvez prendre avantage d'un 404 et le rendre utilise aux utilisateurs, et à vous même, en vous envoyant un mail chaque fois qu'un utilisateur clique sur un lien menant vers une page inexistante.
<p>You
<?php
#some variables for the script to use
#if you have some reason to change these, do. but wordpress can handle it
$adminemail = get_bloginfo('admin_email'); #the administrator email address, according to wordpress
$website = get_bloginfo('url'); #gets your blog's url from wordpress
$websitename = get_bloginfo('name'); #sets the blog's name, according to wordpress
if (!isset($_SERVER['HTTP_REFERER'])) {
#politely blames the user for all the problems they caused
echo "tried going to "; #starts assembling an output paragraph
$casemessage = "All is not lost!";
} elseif (isset($_SERVER['HTTP_REFERER'])) {
#this will help the user find what they want, and email me of a bad link
echo "clicked a link to"; #now the message says You clicked a link to...
#setup a message to be sent to me
$failuremess = "A user tried to go to $website"
.$_SERVER['REQUEST_URI']." and received a 404 (page not found) error. ";
$failuremess .= "It wasn't their fault, so try fixing it.
They came from ".$_SERVER['HTTP_REFERER'];
mail($adminemail, "Bad Link To ".$_SERVER['REQUEST_URI'],
$failuremess, "From: $websitename <noreply@$website>"); #email you about problem
$casemessage = "An administrator has been emailed
about this problem, too.";#set a friendly message
}
echo " ".$website.$_SERVER['REQUEST_URI']; ?>
and it doesn't exist. <?php echo $casemessage; ?> You can click back
and try again or search for what you're looking for:
<?php include(TEMPLATEPATH . "/searchform.php"); ?>
</p>
L'article Dynamic Menu Highlighting explique comment utiliser les marqueurs conditionnels afin de permettre la mise en évidence de la page courante dans un menu.