LASHÔN - WordPress Création Sites Internet

Navigation Menu

Une page Home pour votre blog ou comment faire un site web + blog

Une page Home pour votre blog ou comment faire un site web + blog

Posted on 11 mai 2010 in Wordpress | 11 comments

Créer une page Home permet de personaliser une page d'accueil et distinguer la page blog des articles

Faire de votre blog WordPress un Site Web + Blog. Insérer une page d’accueil pour votre blog (home.php), renvoyer votre blog dans une page distincte:  C’est possible et facile.

1° Option rapide je-ne-veux-pas-chipoter-avec du-code

Le procédé le plus simple mais aussi le plus limité est d’utiliser la fonction des Réglages de votre tableau de bord à l’onglet Lecture.

Allez dans Réglages et choisissez "Lecture".

Allez dans Réglages et choisissez "Lecture".

Selon votre choix, vous aurez peut être besoin de créer au préalable une ou deux pages WordPress pour définir celle qui sera votre page d’accueil (joue la fonction home.php) et celle des articles (qui joue la fonction index.php). Comme la pratique vaut mieux qu’un long discours, je vous suggère de simplement tester la chose. Votre blog ne risque rien et c’est réversible. Il vous suffit de cocher la case ‘sur une page statique’ puis de choisir parmi vos pages existantes celles qui remplissent les rôles décrits ci-dessus. Une fois testé ou si cela ne vous convient pas, revenez à la situation initiale en cochant la première case ‘Les derniers articles’.

Cette méthode est décrite ici dans le Codex.

2° Option création d’une page home.php et blog.php

On va d’abord séparer le blog vers une page WordPress.

Dans le dossier de votre thème WordPress, vous devez créer deux fichiers templates avec un éditeur de texte (genre Notepad). Un home.php et un blog.php. N’oubliez pas la règle : Enregistrez tous vos nouveaux fichiers ou ceux d’une autre langue au format UTF8.

a) Créez un Template intitulé blog.php (par exemple)

Collez dedans juste ceci :

<?php
/*
Template Name: blog
*/
// Choix du Template qui va être chargé pour cette page
$paged = get_query_var('paged');
query_posts('cat=-0&paged='.$paged);
load_template(TEMPLATEPATH . '/index.php'); //charge index
?>

Maintenant allez dans votre tableau de bord à l’onglet Pages et

b) Publiez une page WordPress vide.

Titrez cette page comme vous voulez ça n’a aucune incidence. L’essentiel est: regardez à droite de votre page en cours d’édition, vous verrez des options dans une boîte nommée Attributs (parents, modèles).

Trouvez le menu déroulant intitulé Modèle et Choisissez le modèle blog

(le nom que nous avons donné au Template ci-dessus, mais qui peut évidement être différent). Attention, pour voir ce modèle apparaître, il faut évidement que vous ayez déjà créé ce Template blog.php…

Enregistrez cette page et publiez-la. Votre page blog apparaît dans votre menu de pages, il reproduit le fichier de votre thème intitulé index.php.

Notez que cette méthode est la méthode générale pour créer une Page Template.

Maintenant il vous faut une page d’accueil.

c) Créez un Template intitulé home.php

Là c’est à vous de jouer. Puisque vous désirez une page d’accueil différente, collez-y selon vos besoins. Néanmoins, elle doit contenir le minimum:

<?php get_header(); ?>

CONTENU CHOISI, BOUCLES WP ou TOUT MESSAGE PERSONNEL OU LES DEUX

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Vous pouvez par exemple copier-coller votre index.php dont vous modifiez le contenu. Ce qui vous permettra de conserver la feuille de style en conservant les class et id.

Sinon, si vous désirez créer une apparence totalement différente pour la page Home, il va de soi que vous devrez dans ce cas créer une feuille de style spécifique : home.css et l’appeler dans le header de la page home. Auquel cas, le plus simple est de copier-coller directement le header de votre fichier header.php en remplaçant cette ligne:

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen"/>

par:

<link rel="stylesheet" href="<?php bloginfo('stylesheet_directory'); ?>/home.css" type="text/css" media="screen" title="feuille de style de la page home"/>

Pour coder des boucles selon vos désirs, utilisez par exemple la fonction query_post ou regardez dans le codex les diverses boucles de base.

La hiérarchie de WordPress pousse le fichier home avant index. Donc il n’y a rien d’autre à faire, la page accueil de votre site ou blog sera cette page home.

Pour adapter le menu à cette nouvelle configuration, voir article Menus dynamiques WordPress à la carte, menu site web + blog, pages, sous-pages et catégories

Ressources coder boucles :

Bon travail!

LIRE

Afficher les titres des articles de la même catégorie ou du même auteur que l’article en cours dans WordPress

Afficher les titres des articles de la même catégorie ou du même auteur que l’article en cours dans WordPress

Posted on 9 mai 2010 in Wordpress | 7 comments

navigation des articles rubrique en cours

Afficher les sujets similaires avec une navigation vers les articles de la même rubrique ou du même auteur

Réalisons un petit encart à mettre sous votre article ou dans votre sidebar qui affichera les articles récents de la même catégorie et / ou du même auteur que l’article affiché. Vous choisirez le nombre d’articles listés (tous ou les 5 derniers par exemple). On peut réaliser la chose facilement et sans widget.  Nos caprices d’affichage trouvent toujours une solution avec la magique fonction query_post. Vous voyez bien que l’on peut tout faire avec WordPress. 🙂

Ceci est une adaptation de l’article de Darrenhoyt (en anglais)

Afficher les titres des articles de la même catégorie dans single.php

Ce bout de code peut aller n’importe où dans vos Templates. Par exemple collez-le sous la boucle de votre article, soit dans single.php.Par exemple juste avant :

<?php comments_template( '', true ); ?>

Collez :

<!-- Encart afficher titres articles de la même catégorie -->
<?php
  //Obtenir la catégorie
  global $wp_query;
$cats = get_the_category();
  $postAuthor = $wp_query->post->post_author;
$tempQuery = $wp_query;
  $currentId = $post->ID;

// La catégorie du billet affiché
  $catlist = "";
  forEach( $cats as $c ) {
  if( $catlist != "" ) { $catlist .= ","; }
  $catlist .= $c->cat_ID;
  }
  $newQuery = "posts_per_page=100&cat=" . $catlist;
//Choisir un nombre qui sera le nombre moins un (10 pour afficher 9 titres)
  query_posts( $newQuery );
$categoryPosts = "";
  $count = 0;
if (have_posts()) {
  while (have_posts()) {
  the_post();
  if( $count<100 && $currentId!=$post->ID) {
  // maximum 100 titres mais vous pouvez adapter
  $count++;
  $categoryPosts .= '<li><a href="' . get_permalink() . '">' . the_title( "", "", false ) . '</a></li>';
  }
  }
  }
  $wp_query = $tempQuery;
  ?>

  <h2 class="widget-title">Dans la même catégorie :</h2>
<ul class="widget-container">
<?php echo $categoryPosts; ?>
</ul>
<!-- fin encart afficher titres articles de la même catégorie en cours -->

Adaptez la classe css selon votre template.

Ajustez le nombre d’articles récents de la catégorie en cours que vous désirez afficher (dans l’exemple ci-dessus ce nombre est 20).

Afficher les titres des articles de la même catégorie dans la sidebar

C’est le même code. Mais selon votre sidebar vous devrez préciser une condition du type ‘si article’ en haut du code précédent afin que l’encart n’apparaisse que lors de l’affichage d’un article. Donc selon les cas vous devrez utiliser l’une de ces configurations suivantes. Par exemple pour le thème par défaut, TwentyTen depuis la version WP 3., placez votre code juste sous:

<div id="primary" class="widget-area">

La version la plus courante et recommandée est :

<?php if ( is_single()): ?>
CODE ARTICLES MÊME RUBRIQUE/AUTEUR
<?php } ?>

Mais votre sidebar comporte déjà des tags conditionnels :

<?php } elseif ( is_single()) { ?>
CODE ARTICLES MÊME RUBRIQUE/AUTEUR

Adaptez la classe css selon les classes indiquées dans votre functions.php pour les widgets ou votre sidebar.php

Vous pouvez évidement aussi mettre cet encart ailleurs que dans la sidebar.

Afficher les titres des articles du même rédacteur

De la même manière, si vous êtes plusieurs rédacteurs vous serez peut être intéressés d’afficher également tous les articles d’un auteur et selon la catégorie en cours.

<!-- Encart afficher titres articles de la même catégorie -->
<?php
  //Obtenir la catégorie
  global $wp_query;
$cats = get_the_category();
  $postAuthor = $wp_query->post->post_author;
$tempQuery = $wp_query;
  $currentId = $post->ID;

// Les billets du même auteur
  $newQuery = "posts_per_page=5&author=" . $authorPosts;
	// CHOISIR le nombre de posts à afficher, laisser vide pour tous
	//ou choisir un nombre qui sera le nombre moins un (5 pour afficher 4 titres)
  query_posts( $newQuery );
$authorPosts = "";
  $count = 0;
if (have_posts()) {
  while (have_posts()) {
  $count++;
  the_post();
  if( $count<100 && $currentId!=$post->ID) {
    // maximum 100 titres mais vous pouvez adapter
  $count++;
  $authorPosts .= '<li><a href="' . get_permalink() . '">' . the_title( "", "", false ) . '</a></li>';
  }
  }
  }

// La catégorie du billet affiché
  $catlist = "";
  forEach( $cats as $c ) {
  if( $catlist != "" ) { $catlist .= ","; }
  $catlist .= $c->cat_ID;
  }
  $newQuery = "posts_per_page=&cat=" . $catlist;
	// CHOISIR le nombre de posts à afficher, laisser vide pour tous (comme ici)
	//ou choisir un nombre qui sera le nombre moins un (5 pour ici afficher 4 titres)
  query_posts( $newQuery );
$categoryPosts = "";
  $count = 0;
if (have_posts()) {
  while (have_posts()) {
  the_post();
  if( $count<100 && $currentId!=$post->ID) {
  // maximum 100 titres mais vous pouvez adapter
  $count++;
  $categoryPosts .= '<li><a href="' . get_permalink() . '">' . the_title( "", "", false ) . '</a></li>';
  }
  }
  }
  $wp_query = $tempQuery;
  ?>

  <h2 class="widget-title">Dans la même catégorie :</h2>
<ul class="widget-container">
<?php echo $categoryPosts; ?>
</ul>
 <h2 class="widget-title">Du même auteur :</h2>
<ul class="widget-container">
<?php echo $authorPosts; ?>
</ul>
<!-- fin encart afficher titres articles de la même catégorie en cours -->

Sources pour ce tuto :

LIRE

Menus dynamiques WordPress à la carte, menu site web + blog, pages, sous-pages et catégories

Menus dynamiques WordPress à la carte, menu site web + blog, pages, sous-pages et catégories

Posted on 7 mai 2010 in Wordpress | 4 comments

Illustration de Astrid Yskout (zoeff)

Besoin d’adapter le menu de votre thème WordPress? Ajouter des catégories, un lien vers la page d’accueil, des sous-pages? Besoin d’un menu qui liste à la fois pages et catégories? Un menu adapté à un site web + blog? Concevant ici et là divers blogs et sites web dont les menus sont parfois spécifiques, voici en partage quelques codes de menus horizontaux et dynamiques que j’ai pu concocter.

Sachez tout d’abord que vous trouverez toute la documentation à ce sujet dans le Codex pour plus de détails:

Le code du menu se trouve généralement dans le fichier header.php de votre thème. Le plus souvent il liste vos pages ou vos catégories (voir ci-dessous). Cherchez-le pour savoir comment le modifier.

Menu listant vos pages

<ul id="nav">
<li <?php if(is_home()) { ?> class="current_page_item" <?php
// ajoute lien vers page accueil partout sauf en page d'accueil
 } ?>><a href="<?php echo get_option('Acceuil'); ?>/">Acceuil</a></li>

  <?php wp_list_pages('depth=1sort_column=menu_order&title_li=' ); // menu pages ?>
</ul>

Menu listant vos sous-pages

<?php
if(!$post->post_parent){
	// Affiche les sous-pages de cette page
	$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}else{
	// Affiche seulement les sous-pages d'un niveau parent
	//$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");

	if($post->ancestors)
	{
	// Maintenant vous pouvez récupérer le top ID de cette page
	// WP fonctionne selon un ordre descendant des id de pages (DESC), c'est pourquoi le niveau ID supérieur est toujours le dernier
		$ancestors = end($post->ancestors);
		$children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0");
		// Conclusion, où que vous soyez vous récupérez toujours la liste complète des sous-pages
	}
}

if ($children) { ?>
	<ul>
		<?php echo $children; ?>
	</ul>
<?php } ?>

Insérer un lien externe ‘en dur’ à votre menu

Ajouter cette ligne avec l’URL de votre choix:

<li id="current"><a href="ADRESSE URL">TITRE DU LIEN</a></li>

Ajouter un lien vers la page d’accueil.

Ajoutez cette ligne avant ou après votre code de menu existant (catégories ou pages). Ce lien s’affiche partout sauf sur la page d’accueil.

<li <?php if(is_home()) { echo ' '; } ?>><a href="<?php bloginfo('url'); ?>">Acceuil</a></li>

Ajouter un lien vers votre flux RSS avec une image.

Préparez une image pour votre flux. Ajoutez-la dans le dossier ‘images’ de votre thème et renommez-la comme ci-dessous (adaptez le code ‘images/rss.png’ suivant nom de dossier). Puis collez le code suivant comme pour tout lien en dur, à la suite ou avant votre menu wp_list_pages ou wp_list_categories.

 <li><a href="<?php bloginfo('rss2_url'); ?>"><img src="<?php bloginfo('template_url'); ?>/images/rss.png" /> Flux RSS</a></li>

Menu listant vos catégories

Ajoutez cette ligne à votre menu pages (ou remplacez-le)

<?php wp_list_categories('depth=1&hide_empty=0&orderby=name&order=ASC&title_li=' ); ?>

Menu des sous-catégories d’une seule catégorie (menu catégorie enfant)

C’est la fonction child_of= qui la définit. Par exemple pour afficher la liste des sous-catégories de la catégorie ID=8 :

<ul>
<?php wp_list_categories('orderby=id&show_count=1
&use_desc_for_title=0&child_of=8'); ?>
</ul>

Pour exclure des catégories ou des pages de votre menu, il suffit d’ajouter les ID de celles-ci : &exclude=1,50,12. Ce qui donne pour la dernière ligne (dont on exclut les catégories ID 1, 50 et 12) :

<li><?php wp_list_categories('title_li=&depth=4sort_column=name&exclude=1,50,12'); ?>

A l’inverse, pour inclure seulement les pages de votre choix dans votre menu pages, c’est la fonction include= qui le permet:

<ul>
  <?php wp_list_pages('include=7,13,26,35&title_li=' ); ?>
  </ul>

Menu combinant pages et catégories.

      if (get_option('rt_drop_down_menu')){
                      wp_list_pages('include_tree='.$nav_bar_pages.'"&title_li=&sort_column=menu_order&exclude_tree='.$nav_bar_ex_pages.'&depth=0' );
  }else{
                      wp_list_pages('include_tree='.$nav_bar_pages.'"&title_li=&sort_column=menu_order&exclude_tree='.$nav_bar_ex_pages.'&depth=1' );
                }
                ?>

et les catégories:

<div id="navbarleft">
 <ul id="nav">
      <li><a href="<?php echo get_settings('home'); ?>">Accueil</a></li>
       <?php wp_list_pages('title_li=&depth=4&sort_column=menu_order'); ?>
            <li><?php wp_list_categories('title_li=&depth=4&sort_column=name'); ?></ul>
            </li>
    </div>

En pratique, quelques autres exemples. Voici un menu pour un site web + blog incluant catégories du blog et pages,

Menu adapté à un Site Web avec Blog distinct

<div id="menu">
 <div id="nav">

<!-- affiche liste de pages en excluant celles qui sont affichées ailleurs (ici pages ID 3 et 500) -->
<?php wp_list_pages('exclude="3,500&title_li=0&children=0&depth=2'); ?>

<!-- affiche la page du blog et ses catégories, si par exemple votre blog est codé par une page template avec la page ID=45 -->
   <li><a href="<?php bloginfo('home');?>/?page_id=45">Blog</a>
   <ul class="children">
 <?php wp_list_categories('orderby=name&show_count=0&title_li=');?>
         </ul>
    </li>
 <!-- affiche une page template particulière nommée 'portfolio arts' qui liste des catégories précises. Par exemple les sous-catégories de la catégorie 'ART'. Ceci code un lien pour la page template avec sous-catégories de catégorie 'art' (page id=23 et catégorie ID=6) -->
	   <li><a href="<?php bloginfo('home');?>/?page_id=23">Portefolio arts</a>
         <ul class="children">
		 <?php wp_list_categories('orderby=name&show_count=0&title_li=&use_desc_for_title=0&child_of=6'); // id=6 étant la catégorie Arts ?>
         </ul></li>

<!-- en prime un lien dur pour par exemple la page à propos -->
<li><a href="<?php bloginfo('home');?>/a-propos/">A propos</a></li>

<!-- ou un lien dur vers un de vos autres blog externe  -->
<li><a href="ADRESSE URL">Mon autre blog ailleurs</a></li>

	</div><!-- fin nav -->
	</div><!-- fin menu -->

Un menu pages et catégories pour site web et blog distinct

<div id="nav">
<ul class="clearfloat">
<li class="cat-title">Catégories:</li>
    <li class="cat-item"><a href="<?php bloginfo('home');?>/?page_id=45">BLOG</a>
         <ul class="children">
             <?php wp_list_categories('orderby=name&title_li=&exclude=');
                  $this_category = get_category($cat);
                  if (get_category_children($this_category->cat_ID) != "") {
                      echo "<ul>";
                      wp_list_categories('orderby=id&show_count=0&title_li=
                      &use_desc_for_title=1&child_of='.$this_category->cat_ID);
                      echo "</ul>";
                  }
	     ?>
         </ul>
    </li>
</ul>
<ul>
<?php wp_list_pages('orderby=id&title_li=&depth=3&children=0'); ?>
</ul>
	</div> <!-- fin nav -->
     </div> <!-- fin menu -->

Menu pages et sous-pages et Catégories

<div id="menu">
<div id="nav">
<?php wp_list_pages('exclude="700&title_li=0&children=2&depth=2'); // adapter si besoin exclure une page, ici la id=700
?>
	</div>
	<ul id="subnav">
	<?php echo $children; ?>
<?php wp_list_categories('orderby=name&show_count=0&title_li=');?></ul>

<!-- Sous-menu pour sub-pages ou sub-categories -->
<?php if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul id="subnav">
<?php echo $children; ?>
<?php wp_list_categories('orderby=name&show_count=0&title_li=');?>
</ul>
<?php } else { ?>
<?php } ?>
	</div><!-- fin menu -->

Menu conditionnel selon endroit

Si vous désirez afficher un menu différent selon que le visiteur est sur une page, un article, une catégorie ou la page home, il vous suffit de faire un code par menu puis de les afficher avec les tags conditionnels. Principe de base:

<?php if ( is_home() ) { ?>
Ici coller votre MENU pour HOME ACCUEIL (soit une page home.php si vous en avez une en cas de site web, soit index.php, c'est à dire votre page accueil avec tous les articles)

<?php  } elseif ( is_page() ) { ?>
Ici coller MENU si affichage PAGE

<?php  } elseif ( is_category() ) { ?>
Ici coller MENU  si affichage  CATÉGORIE

<?php } else { ?>
Ici coller MENU  si AUTRE (soit index.php soit autre ni page ni home, comme les tags, archives, articles, recherche, author...)
<?php } ?>

Exemple concret:

<?php if ( is_home() ) { // MENU pour HOME ACCUEIL, AFFICHE NOM, Slogan, RSS puis PAGES ET SOUS-PAGES
?>

<h1><a href="<?php bloginfo('siteurl');?>/" title="<?php bloginfo('name');?>"><?php bloginfo('name');?></a></h1>
<h3><?php bloginfo('description'); ?></h3>
<li><a href="<?php bloginfo('rss2_url'); ?>">Souscrire aux articles</a></li>
<li><a href="<?php bloginfo('comments_rss2_url'); ?>">Souscrire aux commentaires</a></li>

<div id="nav">
<?php wp_list_pages('title_li=0&children=0&depth=2'); ?>
</div>
<ul id="subnav">
<?php echo $children = wp_list_pages("title_li=&child_of="); ?>
</ul>

<?php  } elseif ( is_page() ) { // MENU si affichage PAGE : seulement le menu pages et sous-pages
?>

<div id="nav">
<?php wp_list_pages('title_li=0&children=0&depth=2'); ?>
</div>
<ul id="subnav">
<?php echo $children = wp_list_pages("title_li=&child_of="); ?>
</ul>

<?php  } elseif ( is_category() ) { // MENU  si affichage  CATÉGORIE
?>
<div id="nav">
<?php wp_list_pages('exclude="716,692,1668,12,2161&title_li=0&children=2&depth=2'); ?>
	</div>
	<ul id="subnav">
	<?php echo $children; ?>
<?php wp_list_categories('orderby=name&show_count=0&title_li=');?></ul>

<?php } else { // MENU  complet si AUTRE
?>

<div id="menu">
<div id="nav">
<?php wp_list_pages('title_li=0&children=2&depth=2'); ?>
	</div>
	<ul id="subnav">
	<?php echo $children; ?>
<?php wp_list_categories('orderby=name&show_count=0&title_li=');?></ul>

<!-- Sous-menu pour sub-pages ou sub-categories -->
<?php if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul id="subnav">
<?php echo $children; ?>
<?php wp_list_categories('orderby=name&show_count=0&title_li=');?>
</ul>
<?php } else { ?>
<?php } ?>
	</div><!-- fin menu -->
<?php } ?>

Afficher les catégories de votre blog dans le menu pour une page Template

Vous avez créé une page home.php afin que votre blog (index.php) soit distinct de la page d’accueil. Votre menu affiche les pages, donc votre blog est l’une de ces pages (ici ex. ID=65). Pour afficher les catégories sous cette page :

<div id="nav">
<ul class="clearfloat">
<li class="cat-title">Autres</li>
    <li class="cat-item"><a href="<?php bloginfo('home');?>/?page_id=65">BLOG</a>
         <ul class="children">
             <?php wp_list_categories('orderby=name&title_li=&exclude=');
                  $this_category = get_category($cat);
                  if (get_category_children($this_category->cat_ID) != "") {
                      echo "<ul>";
                      wp_list_categories('orderby=id&show_count=0&title_li=
                      &use_desc_for_title=1&child_of='.$this_category->cat_ID);
                      echo "</ul>";
                  }
	     ?>
         </ul>
    </li>
</ul>
<ul>
<?php wp_list_pages('orderby=id&title_li=&depth=3&children=0'); ?>
</ul>
	</div> <!-- fin nav -->

Enfin, vous pouvez définir l’apparence de ce menu en ajoutant ces classes à votre style.css (mais alors aussi dans votre menu !)

Apparence menu pages:

.pagenav { … } /* l'onglet des pages */
.page-item-2 { … } /* l'onglet de la Page ID 2 */
.page_item { … } /* tout item (onglet) de Page */
.current_page_item { … } /* l'onglet de la Page courante */
.current_page_parent { … } /* définit l'onglet parent de la page courante */
.current_page_ancestor { … } /* tout ancêtre de cette page courante */

Apparence menu catégories:

 li.categories { ... }  /* l'onglet de la liste des objets catégories */
 li.cat-item { ... } /* un onglet catégorie */
 li.cat-item-7 { ... }  /* onglet de la categorie ID #7, etc */
 li.current-cat { ... } /* onglet de la catégorie courante */
 li.current-cat-parent { ... }  /* onglet de la catégorie parente */
 ul.children { ... }  /* onglet de la catégorie enfant */

That’s All Folks!

LIRE

Affichez la liste de vos articles mis à jour

Affichez la liste de vos articles mis à jour

Posted on 6 mai 2010 in Wordpress | 12 comments

Annoncez les updates importants de vos anciens articles à vos visiteurs

Si comme moi vous mettez souvent à jour certains de vos vieux articles pour infos complémentaires essentielles, il peut être utile d’afficher quelque part la liste de ceux-ci pour avertir vos visiteurs.

Ce que j’ai fait sur mon blog.  Voici le bout de code qui affiche les titres et liens vers les derniers articles mis à jour (modifiés). Vous pouvez insérer ce code n’importe où (sidebar.php, single.php, index.php).

Modifiez à la ligne $number dans ce code le chiffre qui définit le nombre des titres mis à jour selon votre convenance.

<!-- ENCART AFFICHER LES 3 DERNIERS ARTICLES MIS A JOUR -->
<?php
$today  = current_time('mysql', 1);
$number = 3; // CHOIX NOMBRE TITRES ARTICLES A AFFICHER
if($recentposts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_modified_gmt < '$today' ORDER BY post_modified_gmt DESC LIMIT $number")):
?>

<h2><?php _e("Derniers articles modifiés"); ?></h2>
<ul>
<?php
foreach($recentposts as $post) {
	if($post->post_title == '') $post->post_title = sprintf(__('Post #%s'), $post->ID);
	echo '<li><a href="'.get_permalink($post->ID).'"> ';
	echo ''.the_title().'';
	echo'</a></li>';

} ?>
</ul>
<?php endif; ?>
<!-- fin derniers articles updatés -->

Tout article mis à jour, soit par la fonction ‘modification rapide’ soit par réécriture de votre billet, donc modifié ou non, apparaîtra dans cet encart, incluant le dernier article en date.

LIRE

Comment changer les permaliens de WordPress pour Free

Comment changer les permaliens de WordPress pour Free

Posted on 22 avril 2010 in Wordpress | 29 comments

-cet article est un brouillon mais comme il est utile et annoncé par un autre article je le mets en ligne avant de revenir plus clairement dessus (ajout d’images) –

NE TOUCHEZ PAS AUX PERMALIENS VIA WORDPRESS. PASSEZ PAR VOTRE BASE DE DONNÉES SQL

Non, nous les WordPressiens ne nous laisserons pas intimider par un hébergeur dans notre souci d'avoir des URL propres

Dans la majorité des cas, tenter de changer les permaliens dans votre tableau de réglages générera une belle erreur 500 dont vous ne sortirez au mieux qu’une demi-heure plus tard.
Sachez que le seul fait de cliquer sur le réglage « permaliens » dans WordPress génère cette erreur… Non seulement ne changez rien mais n’allez même pas visiter ce réglage. Alors pas de beaux permaliens avec Free ? Si.

Mais si vous lisez ceci c’est que vous êtes probablement déjà planté (pas vous, votre blog). Donc si cela vous est arrivé, commençons par vous sortir de là. Pour les autres sautez au paragraphe suivant.

Se sortir d’une erreur 500 suite à une tentative de changement de permaliens

vous devez supprimer par ftp, le fichier .htaccess généré par WordPress, vider le cache de votre navigateur, vous reconnecter puis remettre le réglage par défaut. Bien souvent plusieurs tentatives sont nécessaires puisque le fait de cliquer dans le tableau de bord sur ce réglage génère une erreur… donc vous devrez faire cette opération deux fois.

Changer les permaliens

Permaliens

Le seul fait de cliquer sur le réglage "permaliens" dans WordPress génère un Rewrite Rules dans votre fichier .httacces, ce que Free ne supporte pas

D’emblée je dois vous dire que certaines rares personnes disent avoir réussi à changer leur permaliens tout en étant hébergé chez Free via leur tableau de bord WordPress. Mais ils ne savent ni pourquoi ni comment, et le mode opératoire qui fonctionne pour eux n’est pas commun à tous. Autrement dit, plutôt aléatoire et bidouillage.

Certains arrivent à leur fin en choisissant comme structure personnalisée l’une de ces lignes:

/index.php/%postname%
/index.php/%category%/%postname%/
/index.php/%category%/%postname%-%post_id%

Mais il faut savoir que même si ça fonctionne, la navigation sera du type : http://monsite.free.fr/index.php/nom-de-l’article.php et ce à condition que vous ayez rempli les champs catégorie et tag.

La seule méthode sûre et rapide pour changer les permaliens chez Free est passer directement par la console SQL phpmyadmin de votre hébergeur.

Et non pas via le tableau de bord de WordPress, parce que le mode Rewrite Rules est interdit chez Free. Or WordPress génère automatiquement un Rewrite lors du changement de permaliens, ce que vous pouvez voir dans .htaccess (lignes ajoutées).

Pour changer les permaliens, osez braver la console SQL et allez dans votre console SQL ou phpmyadmin. C’est-à-dire allez chez votre hébergeur dans votre espace accueil. Trouvez la console SQL (ou Base de données ou phpadmin). Go!
Vous voyez maintenant votre base de données.
Affichez la table wp-options. Une fois là, cherchez l’option permalink-structure.
Dans options_value de cette option, insérez la structure de permaliens que vous désirez. Dans le cas précis de Free, mettre au début de la structure personnalisée /index.php au début est impératif. Par exemple

/index.php/%category%/%postname%/

Tant que vous y êtes, vous devez également choisir les préfixes pour la catégorie et le tag. Comme dans l’option du tableau de bord de WordPress. Là aussi on le fait via SQL dans wp-options. Dans wp_options, trouvez l’option nommée category_base. Cliquez sur le petit crayon pour modifier. Indiquez ce que vous voulez (attention, ne mettez jamais d’accent ni d’espace dans une url!). Par exemple categorie.
Maintenant, le préfixe du tag. Toujours dans wp_options, trouvez tag_base (probablement une page plus loin). Modifier selon votre choix, de la même façon. Mettez tag ou motcle (pas d’accent).

LIRE