WordPress : Comment réduire le code répétitif
J’ai cherché pendant un moment comment faire cela mais en vain. Une partie de mon modèle utilise une grande partie du même code, c’est-à-dire la récupération d’une page spécifique.
S’il s’agissait de Javascript, je configurerais une fonction et continuerais à appeler la fonction. Comment puis-je appeler le code ci-dessous à plusieurs reprises ?
<?php
$page = get_page_by_title('Excerpts Showreel'); <-- This piece of code will change
// the code below will never change.
?>
<?php
$my_id = $page;
$post_id = get_post($my_id, ARRAY_A);
$title = $post_id['post_title'];
$content = $post_id['post_content'];
?>
<?php
echo $content
?>
Solution n°1 trouvée
Suite à la réponse de @EAMann, je suppose que vous voulez que ‘Excerpts Showreel’ soit variable et qu’il renvoie le contenu en passant la variable?
function mytheme_get_page_content_by_title( $title = false ) {
if ( false == $title ) return;
$page = get_page_by_title( $title );
$my_id = $page;
$post_id = get_post($my_id, ARRAY_A);
$title = $post_id['post_title'];
$content = $post_id['post_content'];
return $content;
}
Puis dans votre modèle :
echo mytheme_get_page_content_by_title( 'Excerpts Showreel' );
Notez que vous voudrez peut-être nettoyer la $title
variable transmise à la fonction.
ÉDITER
Je ne sais pas pourquoi vous auriez besoin de renvoyer le titre (c’est ce avec quoi vous commencez et passez à votre fonction), mais voilà:
function mytheme_get_page_details_by_title( $title = false ) {
if ( false == $title ) return;
$page = get_page_by_title( $title );
$my_id = $page;
$post_id = get_post($my_id, ARRAY_A);
$posttitle = $post_id['post_title'];
$postcontent = $post_id['post_content'];
$details = array(
'title' => $posttitle,
'content' => $postcontent
);
return $details;
}
Ensuite, vous devrez le passer à une variable pour l’utiliser dans votre modèle :
$mypostdetails = mytheme_get_page_details_by_title( 'Excerpts Showreel' );
echo $mypostdetails['title']; // print the post title
echo $mypostdetails['content']; // print the post content
Solution n°2 trouvée
Vous pouvez définir vos propres fonctions personnalisées en PHP comme vous le feriez en JavaScript. Voici votre exemple de code réécrit à l’aide d’une fonction :
$page = get_page_by_title('Excerpts Showreel'); <-- This piece of code will change
// the code below will never change.
function get_my_content( $page ) {
$my_id = $page;
$post_id = get_post($my_id, ARRAY_A);
$title = $post_id['post_title'];
$content = $post_id['post_content'];
return $content;
}
echo get_my_content($page);
Tant que vous avez get_my_content()
défini votre fonction, vous pouvez l’utiliser partout où vous en avez besoin.
Solution n°3 trouvée
la fonction get template part le fera parfaitement. Mettez simplement votre code dans un fichier séparé.
<?php get_template_part( 'loop', 'index' ); ?>
Avec ce qui précède, vous créeriez un fichier dans votre dossier de thèmes appelé loop-index.php
Lisez-le ici : http://codex.wordpress.org/Function_Reference/get_template_part
0 commentaire