Comment ajouter des champs personnalisés à un type de publication personnalisé?

13

D'accord, j'ai donc enregistré quelques types de publication personnalisés et quelques taxonomies. Maintenant, pour ma vie, je ne peux pas comprendre le code dont j'ai besoin pour ajouter un champ personnalisé à mon type de publication personnalisé.

J'ai besoin d'une liste déroulante et d'une zone de texte d'une seule ligne. Mais je dois aussi avoir des champs séparés pour les types d'articles. Donc, disons que le type de message un a 3 champs et le type de message 2 a 4 champs mais les champs sont différents.

Des astuces vous aideraient. J'ai consulté le codex et j'ai trouvé quelque chose, mais je ne peux pas comprendre ce que je dois ajouter à mon fichier functions.php

.     
posée xLRDxREVENGEx 13.05.2011 - 03:59

5 réponses

15

C’est probablement plus compliqué que vous ne le pensez, je voudrais utiliser un cadre:

Si vous voulez écrire le vôtre, voici quelques tutoriels:

réponse donnée Wyck 13.05.2011 - 05:03
23

Ajoutez / modifiez l'argument supports (lors de l'utilisation de register_post_type ) pour inclure le custom-fields dans l'écran d'édition de votre type de publication personnalisé:

'supports' => array( 
  'title', 
  'editor', 
  'excerpt', 
  'thumbnail', 
  'custom-fields', 
  'revisions' 
)

Source: enlace

    
réponse donnée kubante 23.04.2013 - 16:18
6

Bien que vous deviez ajouter une validation, cette action ne semble pas compliquée pour la version actuelle de WordPress.

Pour ajouter un champ personnalisé à un type de publication personnalisé, vous avez besoin de deux étapes:

  1. Créer une metabox contenant votre champ personnalisé
  2. Enregistrez votre champ personnalisé dans la base de données

Ces étapes sont décrites globalement ici: enlace

Exemple:

Ajoutez un champ personnalisé appelé "fonction" à un type de publication personnalisé appelé "prefix-teammembers".

Ajoutez d'abord le metabox:

function prefix_teammembers_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );

Si vous ajoutez ou modifiez un "prefix-teammembers", le hook add_meta_boxes_{custom_post_type} est déclenché. Voir enlace pour la fonction add_meta_box() . Dans l'appel ci-dessus de add_meta_box() est prefix_teammembers_metaboxes_html , un rappel pour ajouter votre champ de formulaire:

function prefix_teammembers_metaboxes_html()
{
    global $post;
    $custom = get_post_custom($post->ID);
    $function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
    <label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}

Dans la deuxième étape, vous avez votre champ personnalisé dans la base de données. Lors de la sauvegarde, le crochet save_post_{custom_post_type} est déclenché (depuis la version 3.7, voir: enlace ). Vous pouvez y accéder pour enregistrer votre champ personnalisé:

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   
    
réponse donnée Bass Jobsen 30.01.2014 - 21:46
0

Il existe différents plug-ins pour les boîtes à méta et les champs personnalisés. Si vous recherchez un plug-in destiné aux développeurs, essayez Meta Box . Il est léger et très puissant.

Si vous recherchez un tutoriel sur la rédaction de code pour une méta-boîte / des champs personnalisés, alors ceci est un bon début. C’est la première partie d’une série qui pourrait vous aider à affiner le code pour faciliter son extension.

    
réponse donnée Anh Tran 03.01.2018 - 05:22
-4

// slider_metaboxes_html, fonction de création HTML fonction slider_metaboxes () {    global $ wp_meta_boxes;    add_meta_box ('postfunctiondiv', __ ('lien personnalisé'), 'slider_metaboxes_html', 'slider', 'normal', 'high'); }

// add_meta_boxes_slider = > add_meta_boxes_ {type de message personnalisé} add_action ('add_meta_boxes_slider', 'slider_metaboxes');

Connaissance parfaite

    
réponse donnée DTIndia 28.10.2017 - 08:11

Lire d'autres questions sur les étiquettes