web-dev-qa-db-fra.com

Utiliser un plugin pour gérer les types de posts personnalisés?

J'ai vu des tutoriels montrant comment créer des types d'article personnalisés - le processus semble assez simple. Le problème que j'ai avec ceci est que les informations de type personnalisé font partie du thème et ne sont pas gérées par le noyau WP. Ainsi, si le thème est remplacé par un autre, les informations de type personnalisé sont perdues et doivent être portées sur le nouveau thème.

J'ai vu des plugins gérer les types personnalisés pour vous. Il me semble que cela reste séparé du thème, et serait donc plus portable, à condition que le plugin soit maintenu activé. Il serait bien sûr nécessaire que le thème modèle et style le type personnalisé, mais il ne serait pas nécessaire de conserver le type lui-même.

Vaut-il la peine d’utiliser un plugin à cette fin?

5
Grant Palin

Bonjour @ Grant Palin:

La fonction register_post_type() est vraiment agnostique par rapport au thème ou au plugin ; vous pouvez l'utiliser dans un hook 'init' à n'importe quel endroit, cela dépend vraiment de ce que vous essayez d'accomplir.

Par exemple, si je configure un site personnalisé pour un client spécifique , je vais probablement simplement enregistrer les types de publication dans le thème . D'autre part, si j'essaie de créer un type de message personnalisé réutilisable ("Event" pourrait être un exemple) alors je pourrais enregistre le type de post Event dans un plugin spécifique à Event .

Cependant, sachez que à moins que votre type de message ne soit similaire à un message standard, vous aurez probablement besoin d'un support spécifique pour le thème . Et avec la publication en attente de Post Formats dans v3.1, il n'y a vraiment pas beaucoup de bonnes raisons de définir des types de publication personnalisés similaires à un poste d'utilisation standard, de sorte que vous avez vraiment six d'un, une demi-douzaine de l'autre.

De plus, , je mets fréquemment des enregistrements personnalisés pour un nouveau site dans un fichier include appelé par le fichier functions.php du thème , sauf si et jusqu'à J'arrive au point de une fonctionnalité totalement générique auquel cas je vais passer à un plugin (la plupart de mes mes clients écrivent des fonctionnalités réutilisables qu'ils vendent ensuite à leurs clients et la plupart de mes travaux sont liés à des types de publication personnalisés (je ne travaille que très rarement sur du code ne s'exécutant que sur un seul site Web FWIW, JMMV.)

Une chose que je dirai: , j’éviterai d’utiliser des plug-ins fournissant une interface utilisateur pour la création de types de publication personnalisés et de taxonomies personnalisées telles que Interface utilisateur de type de publication personnalisée et similaire sauf pour:

  1. Quand vous voulez faire du prototypage de preuve de concept ou

  2. Lorsque vous souhaitez autoriser un utilisateur final à ne pas autoriser l'accès FTP.

Pourquoi? Parce que , ces plugins stockent tous leurs enregistrements personnalisés et leur taxonomie dans la base de données , ce qui le rend very difficile à contrôler et rend également plus difficile le lancement d'une nouvelle version du site à partir du code source existant. Ces plugins d’UI ne sont vraiment utiles que pour apprendre, bricoler, explorer et/ou faire un rapide et sale "what-if" / "proof-of-concept" . (Bien sûr, les plugins d'interface utilisateur sont merveilleux ces utilisations.)

De plus, le code pour enregistrer un type de message personnalisé et une taxonomie personnalisée est si facile à apprendre qu'il n'y a aucune raison qu'un professionnel de WordPress développe et fournisse un système ne codant pas en dur ses types de message personnalisés taxonomies en code PHP, soit dans le thème, soit dans un plugin, à votre choix. En fait, je suis sur le point d'extraire le plug-in CPT-UI d'un projet client et de le remplacer par des enregistrements codés en dur PHP cette semaine.

J'espère que cela t'aides. (Si non, demander plus.)

7
MikeSchinkel

Ma suggestion pour vous serait d'utiliser la classe EXCELLENTE créée par Dimas et appelée WP Alchemy. Vous pouvez le trouver avec des exemples ici: http://farinspace.com/wpalchemy-metabox/

** Résumé de la classe WPAlchemy Metabox pour Wordpress ": la classe WPAlchemy_MetaBox PHP peut être utilisée pour créer rapidement des méta-boîtes WordPress. Elle vous donnera la flexibilité dont vous avez besoin en tant que développeur, vous permettant de créer rapidement des méta boîtes pour vos thèmes et plugins.

Caractéristiques principales et avantages

  1. Facile à apprendre et à intégrer: une bonne documentation et un bon support sont toujours importants (j'utilise le code moi-même et je le tiens à jour). L'intégration est un jeu d'enfant, aussi simple que d'inclure la classe et de l'utiliser.
  2. Code d'installation facile: certains des détails impliqués dans la sauvegarde, la récupération et l'utilisation des métadonnées sont résumés pour faciliter le développement.
  3. Utilisation flexible: la classe aide au développement de la boîte à méta. De par leur conception, vous pouvez utiliser les fonctions de classe ou vos pratiques de développement actuelles, selon vos préférences.
  4. Séparation HTML et CSS: les codes HTML et CSS de vos méta-boîtes restent séparés du code principal. Vous pouvez concevoir vos méta-boîtes à votre guise, vous offrant ainsi une grande flexibilité pendant le développement.

Définir une méta-boîte est facile

// include the class in your theme or plugin
include_once 'WPAlchemy/MetaBox.php';

// include css to help style our custom meta boxes
if (is_admin()) wp_enqueue_style('custom_meta_css',TEMPLATEPATH . '/custom/meta.css');

$custom_metabox = new WPAlchemy_MetaBox(array
(
    'id' => '_custom_meta',
    'title' => 'My Custom Meta',
    'template' => TEMPLATEPATH . '/custom/meta.php'
));
enter code here

C'est tout! Le code ci-dessus montre la définition de base nécessaire pour configurer une méta-boîte personnalisée.

Comment l'utiliser Toutes les fonctions de cette classe sont très compatibles WordPress. Si vous connaissez WordPress Loop, l'utilisation de cette classe ne devrait poser aucun problème.

Lorsque vous travaillez sur votre fichier de modèle de boîte à méta (meta.php), vous disposez de quelques variables:

$post; // this is the current post, use $post->ID for the current post ID
$metabox; // this is the meta box helper object
$mb; // same as $metabox, a shortcut instead of writing out $metabox
$meta; // this is the meta data

Plus d'informations peuvent être trouvées ici: http://farinspace.com/wpalchemy-metabox/

3
NetConstructor.com