web-dev-qa-db-fra.com

Comment créer différentes sections modifiables dans une page wordpress?

Je construisais mon premier thème sur WordPress et j'ai rencontré des problèmes lors de l'ajout de contenu dans différentes sections.

Mon HTML est un peu comme ça,

<div id="maintext">
   <-- Text -->
</div>
<div id="products">
   <-- Text and Images -->
</div>
<div id="about_company">
   <-- Text boxes -->
</div>

Comment puis-je m'assurer que le contenu ajouté via l'éditeur wordpress relève des divs respectifs? Pour le div "maintext", je vais charger le contenu de la page mais comment puis-je ajouter du contenu dynamiquement aux 2 autres divs?

J'ai cherché sur quelques forums et beaucoup ont suggéré d'ajouter du contenu à l'aide de widgets. Existe-t-il un moyen de le faire sans utiliser de widgets?

Toute aide sera appréciée avec plaisir.

41
Vinith Almeida

Malheureusement, l'ajout de plusieurs champs modifiables dans une seule page n'est pas particulièrement facile avec Wordpress.

De nombreux WP développeurs que je connais (moi-même inclus) se fient au plugin Advanced Customs Fields pour créer des champs de contenu supplémentaires.

Les étapes pour y arriver:

1) Installez l’ACF le bouchon.
2) Dans la zone des paramètres pour ACF, créez de nouveaux champs.
3) Attribuez les nouveaux champs à afficher pour une page ou un ensemble de pages spécifique.
4) Mettez à jour votre modèle de page pour la ou les page (s) donnée (s) afin que les nouveaux champs soient affichés.

Par exemple, vous pouvez créer un ensemble de champs wysiwyg standard, puis les affecter à la page "présentation". Appelons ces champs: main_text, products_info et about_company. Une fois que les champs ont été créés et attribués à une page, lorsque vous modifiez cette page, les champs supplémentaires sont disponibles pour modification.

Pour que les visiteurs puissent voir ces nouveaux champs, ils doivent être ajoutés au modèle de page que vous utilisez pour votre page de synthèse. Le code pourrait être quelque chose comme ceci:

<div id="maintext">
   <!-- Text -->
   <?php if(get_field('main_text')){ //if the field is not empty
        echo '<p>' . get_field('main_text') . '</p>'; //display it
    } ?>
</div>
<div id="products">
   <!-- Text and Images -->
   <?php if(get_field('products_info')){ //if the field is not empty
        echo '<p>' . get_field('products_info') . '</p>'; //display it
    } ?>
</div>
<div id="about_company">
   <!-- Text boxes -->
   <?php if(get_field('about_company')){ //if the field is not empty
        echo '<p>' . get_field('about_company') . '</p>'; //display it
    } ?>
</div>

Il y a beaucoup de bons exemples ici . Si vous vous sentez vraiment ambitieux, plutôt que d'installer le plug-in, vous pouvez même inclure ACF directement dans votre thème .

73
metaColin

Vous avez trois options je crois:

  1. Créez une zone de widget dans laquelle vous pouvez ensuite afficher le contenu dans un widget de texte: http://codex.wordpress.org/Function_Reference/register_sidebar
  2. Créez un modèle dans lequel vous récupérerez le contenu d'une autre page: http://codex.wordpress.org/Page_Templates#File_Folders
  3. Créez une méta-boîte pour toutes vos pages: http://codex.wordpress.org/Function_Reference/add_meta_box

Je pense que ce que vous recherchez, c’est l’option 2. Les autres solutions sont davantage orientées site complet, si vous souhaitez que le contenu supplémentaire apparaisse sur chaque page.

5
user2019515
<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php // echo wp function to get product data; ?>
</div>
<div id="about_company">
   <?php // echo wp function to get about companydata; ?>
</div>
3
Manish

Si vous écrivez le thème, vous voudrez peut-être envisager d'utiliser un framework WordPress pour ne pas avoir à tout recommencer. 

Si ce n'est pas le cas, pensez à l'utilisateur final. Comment vont-ils ajouter des sections aux pages et aux publications? Devront-ils se déplacer dans l'interface utilisateur de WordPress ou préféreront-ils utiliser des codes abrégés?

Ma recommandation est de construire un plugin qui rend la section dans le contenu du document. Ou le contenu du widget si c'est le cas.

J'ai écrit un petit morceau de code pour illustrer comment vous pouvez accomplir une telle chose, et aussi parce que j'en ai besoin maintenant: D. Vous pouvez le trouver sur github ici https://github.com/lionpage/Front-Office-Document-Sections

J'espère que cela t'aides

2
Page Carbajal

J'avais du mal avec cela et je ne voulais pas utiliser de plugin. La seule option native de Wordpress que j'ai trouvée consistait à utiliser Champs personnalisés . Cela fonctionne, mais seulement pour le texte, et est plutôt lourd.

L’autre option non-plugin est d’utiliser simplement HTML dans l’éditeur Wordpress, mais c’est bien sûr loin d’être idéal. 

Finalement, j'ai abandonné et opté pour le plugin Advanced Custom Fields. 

0
kregus

Je suis tombé sur cette question à plusieurs reprises maintenant, et bien que la question ait 3 ans, je pense que c'est encore assez courant. J'ai utilisé avec succès parfois le plugin Multiple Content Blocks:

https://ltz.wordpress.org/plugins/multiple-content-blocks/

Après avoir installé le plugin, vous pouvez simplement inclure the_block dans votre modèle:

<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php the_block('products') ?>
</div>
<div id="about_company">
   <?php the_block('company') ?>
</div>
0

salut je développe actuellement un thème avec cette mise en place. il y a deux façons d'y parvenir:

panneau d'administration widgetisé et fixe (options de personnalisation) 

j'utilise les deux dans mes thèmes if widgets crée un fichier .php qui inclut les sections de widgets crée un widget pour cette section

si cela est corrigé dans le panneau d'administration. Vous devez inclure la section .php dans le fichier functions.php.

edit * avantage de widgetized est que vous pouvez les organiser comme dans une barre latérale normale

0
delbrosit