WordPress.org

Ready to get started?Download WordPress

Codex

Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

User:Alakhnor:Draft2

This article is a ROUGH DRAFT. The author is still working on this document, so please do not edit this without the author's permission. The content within this article may not yet be verified or valid. This information is subject to change.

Introduction

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.

Les Conditions Pour...

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.

La Page Principale

is_home() 
Quand la page principale est affichée.

Une Page d'Article Unique (single post)

Concerne les Articles qui sont affichés unitairement (en général, utilise le fichier single.php des thèmes).

is_single() 
Quand une page d'Article unique est affichée.
is_single('17') 
Quand l'Article 17 est affiché sur une page d'Article unique.
is_single('Beef Stew') 
Quand l'Article dont le titre est "Beef Stew" est affiché en page unique.
is_single('beef-stew') 
Quand l'Article dont le nom est "beef-stew" est affiché en page unique (utilisé dans les permaliens).

Toute Page Contenant des Articles

comments_open()
Quand les commentaires sont autorisés pour l'Article en cours dans la Boucle WordPress.
pings_open()
Quand les pings sont autorisés pour l'Article en cours dans la Boucle WordPress.

Une PAGE

Cette section concerne les Pages WordPress, et pas n'importe quelle page générique de votre blog.

is_page() 
Quand une Page est affichée.
is_page('42') 
Quand la Page 42 est affichée.
is_page('About Me') 
Quand la Page dont le Titre est "About Me" est affichée.
is_page('about-me') 
Quand la Page dont le nom est "about-me" est affichée.

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 :

if(get_the_title($post->post_parent) != the_title(' ' , ' ',false)) { echo "This is a subpage"; } 
détermine si la page en cours est une sous-page en vérifiant qu'elle n'est pas son propre parent (les pages qui ne sont pas des sous-pages sont leurs propres parent). Si c'est le cas, cela affichera "This is a subpage".

Une Page de Catégorie

is_category() 
When any Category archive page is being displayed.
is_category('6') 
When the archive page for Category 6 is being displayed.
is_category('Cheeses') 
When the archive page for the Category with Name "Cheeses" is being displayed.
is_category('cheeses') 
When the archive page for the Category with Category Slug "cheeses" is being displayed.
in_category('5') 
Returns true if the current post is in the specified category id. read more

See also is_archive() and Category Templates.

Une Page d'Auteur

is_author() 
When any Author page is being displayed.
is_author('1337') 
When the archive page for Author number 1337 is being displayed.
is_author('Elite Hacker') 
When the archive page for the Author with Nickname "Elite Hacker" is being displayed.
is_author('elite-hacker') 
When the archive page for the Author with Nicename "elite-hacker" is being displayed.

See also is_archive() and Author Templates.

Une Page Datée

is_date() 
When any date-based archive page is being displayed (i.e. a monthly, yearly, daily or time-based archive).
is_year() 
When a yearly archive is being displayed.
is_month() 
When a monthly archive is being displayed.
is_day() 
When a daily archive is being displayed.
is_time() 
When an hourly, "minutely", or "secondly" archive is being displayed.

See also is_archive().

Une Page d'Archive

is_archive() 
Quand n'importe quelle page de type "Archive" est affichée. Les pages de Catégorie, d'Auteur et les pages Datées sont toutes de type "Archive".

Une Page de Résultat de Recherche

is_search() 
quand une page affichant les résultats de recherche dans les archives est affichée.

Une Page 404 Not Found

is_404() 
Quand une page s'affiche après un message d'erreur "HTTP 404: Not Found".

Une page Paginée

is_paged() 
Quand la page affichée est "paginée". Cela concerne une archive ou la page principale quand elle est séparée en plusieurs pages. Cela ne se réfère pas à un Article ou une Page dont le contenu est divisé par l'utilisation de la balise <!--nextpage--> (voir les quicktags).

An Attachment

is_attachment() 
When an attachment document to a post or Page is being displayed. An attachment is an image or other file uploaded through the post editor's upload utility. Attachments can be displayed on their own 'page' or template. For more information, see Using Image and File Attachments.

Une Syndication

is_feed() 
Quand le site appelé est une Syndication. Ce marqueur n'est pas couramment utilisé par les utilisateurs; il est utilisé en interne par WordPress et est disponible pour les développeurs de plugins.

Un Trackback

is_trackback() 
Quand le site appelé est un hook vers le moteur de Trackback de WordPress. Ce marqueur n'est pas couramment utilisé par les utilisateurs; il est utilisé en interne par WordPress et est disponible pour les développeurs de plugins.

Working Examples

Here are working samples to demonstrate how to use these Marqueurs Conditionnels.

Single Post

This example shows how to use is_single() to display something specific only when viewing a single post page:

if (is_single())
{
     echo 'This is just one of many fabulous entries in the ' . single_cat_title() . ' category!';
}

Date-Based Differences

If someone browses our site by date, let's distinguish posts in different years by using different colors:

<?php
// this starts 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
// are we showing a date-based archive?
if (is_date())
{
     if (date('Y') != get_the_date('Y'))
     {
          // this post was written in a previous year
          // so let's style the content using the "oldentry" class
          echo '<div class="oldentry">';
     } else {
          echo '<div class="entry">';
     }
} else {
     echo '<div class="entry">';
}
the_content('Read the rest of this entry »'); 
?>
</div>

Variable Sidebar Content

This example will display different content in your sidebar based on what page the reader is currently viewing.

<!-- begin sidebar -->
<div id="sidebar">
<?php
// let's generate info appropriate to the page being displayed
if (is_home()) {
        // we're on the home page, so let's show a list of all top-level categories
        echo "<ul>";
        wp_list_cats('optionall=0&sort_column=name&list=1&children=0');
        echo "</ul>";
} elseif (is_category()) {
        // we're looking at a single category view, so let's show _all_ the categories
         echo "<ul>";
        wp_list_cats('optionall=1&sort_column=name&list=1&children=1&hierarchical=1');
        echo "</ul>";
} elseif (is_single()) {
        // we're looking at a single page, so let's not show anything in the sidebar
} elseif (is_page()) {
        // we're looking at a static page.  Which one?
        if (is_page('About')) {
             // our about page.
             echo "<p>This is my about page!</p>";
        } elseif (is_page('Colophon')) {
             echo "<p>This is my colophon page, running on WordPress " . bloginfo('version') . "</p>";
        } else {
              // catch-all for other pages
              echo "<p>Vote for Pedro!</p>";
        }
} else {
        // catch-all for everything else (archives, searches, 404s, etc)
        echo "<p>Pedro offers you his protection.</p>";
} // That's all, folks!
?>
<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>
<!-- end sidebar -->

Helpful 404 page

When a visitor gets a 404 error page, it can be intimidating, and unhelpful. Using Wordpress, you can take the edge off a 404 and make it helpful to users, and yourself, too, by emailing whenever the user clicks a link to a non-existant page. If you use this, don't forget o

<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>

Dynamic Menu Highlighting

The Dynamic Menu Highlighting article discusses how to use the conditional tags to enable highlighting of the current page in a menu.

See also index of Function Reference and index of Template Tags.