Choisissez un modèle de page pour vos articles

Le script ci-dessous va ajouter un sélecteur de modèle pour vos articles dans la colonne latérale de l’éditeur de vos articles dans WordPress. Je vais utiliser la fonction get_template_part   pour afficher le modèle sélectionner et cela va permettre de diviser les différentes boucle de votre thème a fin d’obtenir un code plus clair et d’optimiser l’affichage de votre blog  .Vous pourrez ajouter autant de modèle que vous voulez.


 

Ajouter le code ci-dessous dans le fichier function.php de votre thème :

<?php // template post options

    $dynamic_widget_template = array(

		/* renommer les noms ci-dessous. le nom donner ici correspondra au nom du fichier ex : content-galerie-photos.php */

		"modele-1",

		"modele-2",

		"modele-3",

		"modele-4",

		"modele-5",

		);

	add_action("admin_init", "template_init");

	add_action('save_post', 'save_template_link');

	function template_init(){

		add_meta_box("template_meta", "Sélection modèle article", "template_link", "post", "side", "default");

	}

	function template_link(){

		global $post, $dynamic_widget_template;

		$customer  = get_post_custom($post->ID);

		$linker    = $customer["_template"][0];

	?>

<div class="link_template_header">

	<?php

	echo '<select name="linker" class="template-selection">';

	echo '<option></option>';

	echo '<option>-----------------------</option>';

	foreach ( $dynamic_widget_template as $lister ){

		    if($linker == $lister){

		      echo '<option value="'.$lister.'" selected="true">'.$lister.'</option>';

			}else{

		      echo '<option value="'.$lister.'">'.$lister.'</option>';

			}

		}

	echo '</select><br />';

	?>

</div>

<?php

}

function save_template_link(){

global $post;

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {return $post->ID;}

	update_post_meta($post->ID, "_template", $_POST["linker"]);

}

add_action('admin_head', 'template_css');

function template_css() {

	echo'

	<style type="text/css">

		.template-selection{width:100%;}

	</style>

	';

}

?>

Ici ont va se préoccupé seulement de la première partie du code.

$dynamic_widget_template Va afficher les noms des modèles disponible dans votre thème, le nom du modèles  sera la deuxième parti du nom de votre fichier (modèle) qui sera par exemple content-modele-1.php  ici ont gardera content  préfixe pour les fichiers php. Ont verra plus bas comment l’attribuer. Vous pouvez ajouter des modèles en dupliquant « modele-5 », et en renommant le nom (éviter les majuscules et les accents) .

$dynamic_widget_template = array(

		"modele-1",

		"modele-2",

		"modele-3",

		"modele-4",

		"modele-5",

		);

Un fois que vous avez déterminé le nom de chaque modèle pour votre thème, créer un fichier content-single.php .Ensuite édité le fichier single.php de votre thème copié l’intégralité du code de celui-ci et coller le code dans le fichier content-single.php qui sera le modèle par défaut dans votre thème, après supprimer l’intégralité du code dans le fichier single.php et remplacer le par celui ci-dessous :

<?php

/**

 * 

 * single.php

 */

?>

<?php

	   global $post;

	   $customer  = get_post_custom($post->ID);

	   $linker    = $customer["_template"][0];

		get_template_part( 'content', ''.$linker.'' ); // <-- content-modele.php

// si il y a aucun modèle de sélectionner ont récupère le modèle par défaut

if(empty($linker))

{

get_template_part( 'content', 'single' ); // <-- content-single.php

}

?>

La première partie du code va récupérer le modèle que vous aurez sélectionné lors de l’édition de votre article dans WordPress.

get _template_part( ‘content’,  ».$linker. » );  ici content sera le préfixe de vos fichiers  modèles.

 $linker récupéra le nom de votre modèle que vous aurez sélectionné et qui sera la deuxième parti du nom de votre fichier modèle exemple  content-modele-1.php

global $post;

$customer  = get_post_custom($post->ID);

$linker    = $customer["_template"][0];

get_template_part( 'content', ''.$linker.'' );

La deuxième partie ci-dessous  affichera le modèle par défaut si aucun modèle n’est sélectionné qui est dans notre cas content-single.php.

if(empty($linker))

{

get_template_part( 'content', 'single' );

}

Vous pouvez changer le préfixe (content) pour le nom des fichiers modèle.

Si voulez créer plusieurs modèles de page je vous conseil de lire l’article que j’ai rédigé sur le plugin content parts qui vous permet de faire des blocs séparer pour le même article.

Fichiers sources

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest

3 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Chafik
12 années il y a

Bonsoir,
Ce que j’aimerais faire sur mon blog, c’est enlevé la sidebar dans une seul page bien spécifique (celle-la : http://www.ebooks-gagnants.biz/boutique/). Une idée à proposer ?

Cordialement,
Chafik

Fred
Fred
12 années il y a

Bonsoir Chafik,
Pour retirer la sidebar pour une page créer un nouveau fichier exemple : content-nosidebar.php ensuite copier le contenu du modèle de page original de votre thème dans le nouveau fichier modèle supprimer la fonction : get_sidebar() (qui permet d’afficher la sidebar) ensuite il se peu que vous deviez ajuster la balise qui contient la boucle (l’affichage votre article) par défaut div id= »content » donner lui un autre id exemple id= »content-2″ ensuite éditer votre fichier css ajouter le nouvelle id avec la largeur maximum (width :100% ) et le code css de l’id d’origine.

C’est le même principe avec les pages statique.

damien
damien
8 années il y a

Merci, bien pratique de faire plusieurs modèles pour les articles…
Dans mon cas, certains articles ne devaient pas afficher la sidebar 🙂