web-dev-qa-db-fra.com

Ajout de zones de contenu à un modèle de page personnalisé

Je ne suis pas sûr de savoir comment poser cette question, c'est pourquoi j'ai eu du mal à trouver quoi que ce soit via Google. J'espère que quelqu'un ici comprendra ce que je recherche et pourra me diriger vers des informations sur la manière de le mettre en œuvre.

Je travaille sur un thème personnalisé. Ce que je veux faire est d’avoir sur ma page de modèle plusieurs zones dans lesquelles le client peut ajouter du texte. Chaque zone serait dans un div différent. Sur la page d'édition d'administrateur, lorsque la page de modèle est sélectionnée, un champ permet au client d'ajouter du contenu pour chaque div.

<div id="div1">
   Content brought in by admin
</div>
<div id="div2">
   Content brought in by admin
</div>
<div id="div3">
   Content brought in by admin
</div>

Je voudrais faire ceci via la page d'édition d'administrateur, plutôt que de widgitiser le contenu.

Dans le modèle est:

<?php the_content(); ?>

Y at-il moyen de créer plus d'un qui, combiné avec un peu de magie dans le functions.php créerait le champ pour éditer sur la page d'édition d'admin?

D'avance, je vous remercie de votre temps pour m'aider avec ceci. S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations. Je cherche simplement une direction, j'ai essayé de comprendre cela par moi-même, mais mes recherches n'apportent rien de pertinent, je pense donc que je n'utilise pas le bon langage.

2
JHP

J'ai fini par utiliser le plugin Advanced Custom Fields . En utilisant votre exemple, vous souhaitez créer 3 sections sur une page d'accueil. Commencez par installer le plugin ACF. Créez ensuite vos champs personnalisés et ajoutez-les à votre modèle de page d'accueil. Dans la zone de configuration, vous attribuez un titre spécifique à chaque champ. Ensuite, dans votre modèle de page d'accueil, vous écrirez quelque chose comme ceci:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <div class="container">

        <div class="home1">
            <p><?php the_content(); ?></p>
        </div>

        <div class="home2">
            <?php the_field( 'home2-custom-field' ); ?>
            <p><?php the_content(); ?></p>
        </div>

        <div class="home3">
            <?php the_field( 'home3-custom-field' ); ?>
            <p><?php the_content(); ?></p>
        </div>

    </div>
<?php endwhile; endif; ?>

.home1 serait la zone de l'éditeur de contenu WordPress par défaut, et .home2 et .home3 seraient vos deux nouveaux ACF. the_field() va chercher le contenu personnalisé spécifique puis utilise simplement the_content() comme d'habitude pour l'afficher. Je suis assez nouveau dans le développement de thèmes WordPress, je ne suis donc pas à 100% considéré comme le meilleur moyen, mais cela a parfaitement fonctionné pour moi. :)

2
Finn

Merci à tous pour votre aide et votre direction. J'ai décidé de suivre une voie différente en utilisant une catégorie de publication pour les sections de la page d'accueil. Ce n’est pas exactement ce que je voulais faire mais c’était le moyen le plus rapide d’atteindre le résultat final que je recherchais. Il est facile pour le client de mettre à jour, bien que cela ne soit pas aussi facile que si j'avais réussi à atteindre mon objectif initial de mettre à jour l'éditeur de page de modèle afin d'ajouter trois sections. Je vais toujours travailler là-dessus et vos informations me permettront de commencer, alors merci.

Entre-temps, j'appelle chaque catégorie de publication dans la page de modèle. J'utilise le code ci-dessous, je suis sûr qu'il existe un moyen de l'ajuster de manière à ce qu'il ne soit pas aussi volumineux. (s'il vous plaît n'hésitez pas à me renseigner si vous avez des suggestions)

De toute façon, cela semble bien fonctionner.

<!--Header Home Part One-->
<div class="home1">
<?php
$my_query = new WP_Query( 'cat=9' );
$args = array( 'posts_per_page' => 1 );
if ( $my_query->have_posts() ) { 
while ( $my_query->have_posts() ) { 
    $my_query->the_post();
}
}
?>
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php wp_reset_postdata(); ?>
<!--/home1--></div>
<!--Header Home Part two-->
<div class="home2">
<?php
$my_query = new WP_Query( 'cat=10' );
$args = array( 'posts_per_page' => 1 );
if ( $my_query->have_posts() ) { 
while ( $my_query->have_posts() ) { 
    $my_query->the_post();
}
}
?>
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php wp_reset_postdata(); ?>
<!--/home2--></div>
<!--Header Home Part Three-->
<div class="home3">
<?php
$my_query = new WP_Query( 'cat=11' );
$args = array( 'posts_per_page' => 1 );
if ( $my_query->have_posts() ) { 
while ( $my_query->have_posts() ) { 
    $my_query->the_post();
}
}
?>
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php wp_reset_postdata(); ?>
<!--/home3--></div>

Merci encore et s'il vous plaît, n'hésitez pas à me renseigner si vous pensez que le code ci-dessus pourrait être mieux écrit. J'apprends au fur et à mesure et j'apprécie toute aide!

2
JHP

Je seconderais la suggestion de Howdy_McGee. Avant de commencer à penser à la création de modèles personnalisés, vous devez comprendre la boucle . Cherchez des solutions simples au problème avant de vous lancer dans la thématisation.

0
icicleking