web-dev-qa-db-fra.com

Champs méta personnalisés pouvant être répétés

Je travaille sur la création de méta-boîtes personnalisées pour le back-end de WordPress.

J'aimerais ajouter une metabox avec plusieurs champs, dans mon cas un téléchargement d'image et une entrée de texte, mais avec un bouton pouvant dupliquer les deux champs.

J'ai suivi ce tutoriel et cela fonctionne bien.

Mais comme je veux dupliquer plusieurs champs (comme mentionné précédemment, l'utilitaire de téléchargement multimédia et la saisie de texte), le tutoriel ci-dessus ne convient pas vraiment. Il n'y a qu'un seul texte d'entrée utilisé.

Maintenant, j'ai trouvé le code source suivant, qui correspond un peu à mes souhaits:

https://github.com/tammyhart/Reusable-Custom-WordPress-Meta-Boxes

Cela permet d’avoir plusieurs cas dans un champ répété (c’est ce que je veux), seul le code est trop volumineux et se trouve dans une classe PHP. Maintenant, je veux ce code dans celui du tutoriel, essayez simplement de le soumettre à de nombreux essais les uns pour les autres.

Maintenant, je me demande si quelqu'un peut m'aider avec ça. J'ai essayé beaucoup de choses et je travaille encore à ce jour.

Quand je vois le code source, je n'ai pas vraiment besoin de la pièce et il y aura plus de redondance que nécessaire.

J'ai également essayé le cas simple reproductible à copier/coller, mais je reçois des erreurs, notamment le fait que certaines variables n'existent pas. (Ce sont, comme je le vois aussi, l'enfer une fois déclaré nulle part ...)

Malheureusement, donne ces erreurs sont, comme je l'ai dit, à savoir:

Notice: Undefined variable: repeatable_fields in on line 117 
Warning: Invalid argument supp song for foreach () in   
  customers/0/d/a/xxx/httpd.www/wordpress/wp-includes/functions.php on
  line 2638 
Warning: array_filter () Expects parameter 1 to be array,
  null Given in /file/ on line 118 
Notice: Uninitialized string offset: 0 in on
  line 138

Le code peut être consulté à l’adresse: http://snippi.com/s/xpwucxg

Comment puis-je dupliquer plusieurs champs?

1
Casper

J'ai créé et géré mes propres méta-champs personnalisés pendant des années et je peux vous dire que c'était toujours un casse-tête. Je me suis souvent heurté à des obstacles comme le vôtre et j'ai fini par me frapper du poing contre le mur. J'ai également travaillé sur un certain nombre de sites inondés de plugins, parfois si nombreux que cela m'a mis à l'abri et que j'ai décidé de les utiliser uniquement lorsque cela était absolument essentiel à un projet.

L'un des seuls plugins fiables que j'ai rencontrés était Advanced Custom Fields . Je l'ai utilisé sur presque tous les projets depuis le début, ce qui a vraiment élargi les possibilités de tous mes projets. Il organise vraiment les champs assez bien et pour 25 $, ils ont aussi un additif de champs reproductible que je connais assez bien.

Donnez-leur un coup de feu.

2
cfx

Pour ajouter des champs répétables, vous devez créer un tableau avec, par exemple, des entrées de texte:

array( // Repeatable & Sortable Text inputs
    'label' => 'Typical Day', // <label>
    'desc'  => '', // description
    'id'    => $prefix.'repeatable_typical_day', // field id and name
    'type'  => 'repeatable', // type of field
    'repeatable_fields' =>  array(
            array( // Text Input
                'repeatable_label'  => 'Title', // <label>
                'repeatable_desc'   => '', // description
                'repeatable_id' => $prefix.'program_act_title', // field id and name
                'repeatable_type'   => 'text' // type of field
            ),
            array( // Text Input
                'repeatable_label'  => 'Description', // <label>
                'repeatable_desc'   => '', // description
                'repeatable_id' => $prefix.'program_act_desc', // field id and name
                'repeatable_type'   => 'text' // type of field
            )

    )

)

De cette façon, vous pouvez ajouter des images, saisir du texte, etc.

------- Modifier --------

Tammy a mis à jour le code et corrige les problèmes. La dernière version fonctionne. https://github.com/tammyhart/Reusable-Custom-WordPress-Meta-Boxes

0
Oterox