WordPress : Comment réduire le code répétitif

Publié par Jean-Michel le

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

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *