web-dev-qa-db-fra.com

Afficher le texte modifiable au-dessus des listes d'archives du CPT

J'ai deux types de messages personnalisés (auteurs et partenaires). J'affiche leurs pages d'archives dans la navigation principale et j'utilise archives-authors.php et archive-partners.php pour apporter quelques modifications à l'affichage des messages dans chacune d'elles.

Maintenant, mon client souhaite afficher du texte avant la liste de publication de l'archive. Jusqu'ici, je peux penser aux moyens suivants pour le faire:

  1. Enregistrez le texte en tant que description du type de publication et affichez-le.
  2. Créez une page distincte et codez en dur une boucle WP_Query() personnalisée pour cette page uniquement (par ID) au-dessus de l'archive.
  3. Ecrivez une boucle personnalisée avec WP_Query() pour produire l'archive CPT pour chaque CPT et configurez les modèles "Author Author" et "Partner Archive" pouvant être utilisés sur des pages statiques modifiables.

Cependant, toutes ces solutions semblent sous-optimales pour une ou plusieurs des raisons suivantes:

  • Ils ont besoin de connaissances techniques pour se mettre à jour (n ° 1, n ° 2)
  • Ce n'est pas abstrait (par exemple, la solution doit être codée de manière personnalisée pour chaque archive) (n ° 2, n ° 3)
  • La mise à jour du texte nécessite des connaissances techniques (n ° 1)
  • La solution duplique essentiellement la hiérarchie des modèles (n ° 3).

Je recherche une solution adaptée à WordPress, abstraite et facile à mettre à jour pour le client.

4
mrwweb

L’un des moyens les plus simples (mais pas le seul) d’y parvenir est de créer un panneau d’options personnalisées dans le tableau de bord WP qui permettra à votre client de créer et de mettre à jour des informations pouvant être utilisées dans votre modèle. fichiers sans connaissances techniques nécessaires.

Vous pouvez soit coller les éléments suivants directement dans votre fichier functions.php ou vous pouvez les enregistrer dans un fichier, par exemple config-menu.php (dans le répertoire de votre thème), puis les inclure dans votre fichier functions.php. le code est;

// create config menu in dashboard
add_action('admin_menu', 'config_menu');

function config_menu() {

    //create a menu in the dashboard
    add_menu_page('Website Custom Settings',
                  'Configure Site', 
                  'administrator',
                  __FILE__,
                  'custom_settings_page',
                  ''.get_bloginfo('template_directory').'/images/your_icon.png', 4);

}

//register settings
add_action( 'admin_init', 'register_settings' );

function register_settings() {

    register_setting(   'my-settings-group', 'partners');
    register_setting(   'my-settings-group', 'authors');
}

function my_settings_page() {
?>

<div class="wrap">

    <form method="post" action="options.php">

    <?php settings_fields('my-settings-group'); ?>

    Enter your Partner description here <br/>
    <textarea  name="partners"><?php echo get_option('partners');?></textarea>

    <br />

    Enter your Author description here <br/>
    <textarea  name="authors"><?php echo get_option('authors');?></textarea>
    <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />

    </form>

</div>

<?php } ?>

Ensuite, dans vos fichiers de modèle d'archive pour chaque type de publication, vous pouvez effectuer les opérations suivantes:

<?php echo wpautop(get_option('partners');?>

and

<?php echo wpautop(get_option('authorss');?>

Ceci appellera les valeurs respectives (texte entré) dans les champs de la zone de texte que vous avez créés dans la zone du tableau de bord pour le client.

Remarque: l'exemple de code ci-dessus est très rudimentaire et son extrait pour vous fournir un exemple de base. Aucun style CSS fourni que je vais laisser à vous. Mais cela va faire le travail.

2
userabuser

Il existe maintenant un plugin CPT Descriptions qui fait cela.

Depuis la v0.1, le plugin est plutôt bogué (les éditeurs ne peuvent pas sauvegarder les descriptions), mais la plupart des éléments sont pris en charge dans la version du référentiel GitHub du plugin et vous pouvez trouver quelques autres changements/améliorations parmi les requêtes one existante et pull. Espérons que ceux-ci seront intégrés à la version WordPress du repo du plugin, mais pour le moment ils sont testés sur GitHub.

Pour utiliser le plugin, installez-le simplement, remplissez les champs "Description" pour chaque type de message souhaité, puis affichez la description sur une page d'archive avec:

the_post_type_description();

ou obtenez la description d'un type de message spécifique avec:

the_post_type_description('my_post_type');

ou enregistrez-le dans une variable avec:

$description = get_post_type_description();
1
mrwweb