Question

Je dois créer une boîte postale personnalisée META (es) pour mon type de poste personnalisé « Diaporama » (ce type de post est déjà créé). Chaque METABOX tiendra le contenu de chaque diapositive de diaporama et l'enregistrer dans les champs personnalisés correspondant. Chaque METABOX doit contenir les champs suivants:

  • Titre (champ de texte)
  • l'image (un champ de texte pour l'URL img ou idéalement une liste déroulante affichant les vignettes des images Attached au poste)
  • Code d'intégration (zone de texte)
  • Description (WYSIWYG)
  • Masquer la diapositive (à utiliser pour Checkbox masquer temporairement une diapositive sans le supprimer)
  • Supprimer la diapositive (bouton qui efface le contenu des champs de méta post qui ont été remplis par cette diapositive)

Je voudrais également une part de bouton qui me permet de « Ajouter une diapositive » alors quand on clique dessus, il ajoute une autre « Slide » Custom Meta Box qui est une copie de la première, mais ajoute un nombre supplémentaire à chaque poste personnalisé champ méta. J'ai actuellement seulement 15 Metaboxes et le modèle diaporama est configuré d'une manière que si seulement 5 des Metaboxes sont remplis alors seulement 5 affichage de diapositives.

Enfin, je voudrais être en mesure de réordonner les diapositives, que ce soit par « glisser-déposer » ou par un autre champ de texte que je peux saisir le numéro de commande dans.

J'ai eu presque là où je besoin avec le plugin « Plus champs » et l'aide de code à partir Rarst. Avec le « Plus champs » plug-in Je les champs suivants dans chaque METABOX:

  • Titre (champ de texte)
  • l'image (liste déroulante des images attachées au poste)
  • Code d'intégration (zone de texte)
  • Description (WYSIWYG)
  • Masquer la diapositive (à utiliser pour Checkbox masquer temporairement une diapositive sans le supprimer)

Voici une capture d'écran de la façon dont je l'ai configuré à travers le plug-in « Plus Fields »:

text alt

Le problème est qu'il n'y a aucun moyen de supprimer une diapositive une fois qu'il est fait parce que « Plus champs » n'utilise nulle part de <?php delete_post_meta($post_id, $key, $value); ?>. L'autre problème avec le plugin est qu'il est trop peu fiable et casse fréquemment mises à jour.

J'ai été en mesure de mettre en œuvre une solution similaire avec mes propres Metaboxes personnalisés qui comprend:

  • Titre (champ de texte)
  • l'image (champ de texte pour l'URL img)
  • Code d'intégration (zone de texte)
  • Description (zone de texte)
  • Masquer la diapositive (à utiliser pour Checkbox masquer temporairement une diapositive sans le supprimer)

Avec cette implémentation, je ne peux pas sembler obtenir les multiples champs de TinyMCE au travail ou dans la liste déroulante d'image. Le code TinyMCE semble fonctionner jusqu'à ce que j'ajouter le code qui crée des copies supplémentaires de la première METABOX à quel point je reçois ce droit d'erreur au-dessus du champ où les boutons TinyMCE doivent être:. Warning: array_push() [function.array-push]: First argument should be an array...

En outre, en ce moment je me fie à mes écrivains de savoir mettre soit dans une vidéo ou une image pour chaque diapositive et qui est ok, mais il peut être préférable d'avoir un bouton radio qui leur permet de choisir celui de la diapositive est ( probablement par défaut à l'image) qui est liée à une déclaration d'affichage conditionnel dans le modèle de diaporama.

Je la gestion des téléchargements d'images via la boîte intégrée « Photo descriptive » dans la barre latérale, bien que je ne me dérangerait pas un METABOX personnalisé qui dit simplement « Télécharger des images » en haut du panneau d'écriture.

En fin de compte, je suis à la recherche d'un diaporama similaire à ceci: SlideDeck . Malheureusement, le plug-in ne répond pas à mes besoins, mais la façon dont ils gèrent la commande des diapositives est assez lisse. Il est un METABOX séparé dans la barre latérale qui vous permet de faire glisser les diapositives autour dans l'ordre que vous voulez. Ceci est également comment ajouter des diapositives, en cliquant sur un bouton « Ajouter Slide » qui ajoute une autre diapositive Metabox au panneau d'écriture. Voici une capture d'écran:

text alt

Vous pouvez également voir captures d'écran de celui-ci en action dans le dépôt wordpress.

Voici tout mon code:

Les fonctions de réglage mon diaporama type Post et Diaporama Pagination: http://loak.pastebin.com/g63Gf186

Le code d'origine de DeluxeBloggingTips.com (DBT) que je me suis basé Metaboxes hors de: http://loak.pastebin.com/u9YTQrxf

La version du code DBT que j'ai modifié pour me donner des versions supplémentaires du même METABOX: http://loak.pastebin.com/WtxGdPrN

Une version modifiée du code TCD Chris Burbridge créé pour permettre plusieurs instances de TinyMCE : http://loak.pastebin.com/Mqb3pKhx Avec ce code, les TinyMCEs fonctionnent.

Ma modification du code de Burbridge qui tente d'intégrer mes et un champ incrémentation qui vous permet de choisir l'image à partir d'une liste déroulante de toutes les images attachées au poste: http://loak.pastebin.com/xSuenJTK Dans cette tentative, le TinyMCE est cassé et le menu déroulant ne fonctionne pas.

Cela n'a probablement pas, mais juste au cas où vous vous demandez, voici le code que j'utilise pour tirer le code embed du poste personnalisé meta, redimensionner, et l'insérer dans le message: http://loak.pastebin.com/n7pAzEAw

Ceci est une version modifiée de la question initiale pour refléter l'état actuel du projet et répond aux questions posées dans les commentaires. Merci à Chris_O pour mettre la prime à ce sujet. En outre, grâce à Rarst et Justin pour me aider avec beaucoup de cela dans le forum ThemeHybrid.com . J'ai passé des heures et des heures sur ce sujet et suis coincé (j'ai passé seul quelques heures sur cette question). Toute aide serait grandement appréciée.

Était-ce utile?

La solution

De l'apparence des choses, votre pari le plus sûr et itinéraire le plus facile serait à la fourchette le plus de champs plugins spécifiquement pour votre utilisation. Les deux plus grandes caractéristiques que je peux voir votre fourchette sont un champ qui ont besoin « usine » et une interface drag-and-drop.

Multiple champs

Ma suggestion serait de regarder le WordPress classe Widget et l'utiliser comme modèle pour votre domaine usine - essentiellement, emprunter la possibilité de créer plusieurs instances d'un champ une fois que vous avez le cadre construit pour elle.

Ceci est le cœur de la façon dont plusieurs widgets travail dans une barre latérale:

  • Vous définissez le code pour chaque widget de fois par l'extension de la classe WP_Widget.
  • Ensuite, vous pouvez créer autant de copies du widget que vous voulez
    • Les spécificités de chaque widget sont stockées sous forme de données en série dans le tableau des options
  • Vous pouvez personnaliser chaque widget les supprimer avec une simple commande delete, et définir leur positionnement explicitement via l'interface glisser-déposer Apparence

Drag-and-drop

Encore une fois, je suggère à la recherche du système de widget WordPress pour l'inspiration. Nous avons déjà une interface glisser-déposer assez intuitive mis en place là-bas, il serait assez facile à Réaffectez une grande partie du même code ailleurs. Ou, si vous voulez vraiment de fantaisie, vous pouvez mettre en œuvre votre propre système de glisser-déposer dans un champ de méta personnalisé distinct.

Alors chaque diapositive serait défini par une boîte de méta personnalisé qui est lié au poste. L'ordre des diapositives serait réglée par une boîte méta personnalisée séparée qui est également lié au poste. Je vous recommande de soumettre des mises à jour de diapositives via AJAX afin que vous puissiez mettre à jour dynamiquement l'ordre des diapositives boîte de méta sur la base des informations (ce qui empêche d'avoir à frapper manuellement « mise à jour » et attendre la page pour reload avant de passer les choses).

jQuery UI a un « draggable » l'interface que vous pouvez facilement manipuler pour vos fins dans cette case méta personnalisée. Le plus dur ne construit pas l'interface, il devient cohérent, précis communication entre la boîte de méta et la collection de diapositives boîtes de méta ailleurs sur la page.

En résumé

Ce que je colligés poste est que vous avez une solution peu réaliste:

  • Vous avez ajouté 15 champs personnalisés à votre type de poste personnalisé via le champs Plus X, mais veulent dynamiquement champs Ajout / suppression de lieu de travail avec un numéro de série
  • Vous voulez un moyen d'ajuster l'ordre de ces champs personnalisés afin que la charge de diapositives pour

La façon dont j'approche est d'abstraire le processus de création de méta personnalisé à une classe que je peux utiliser encore et encore pour créer de nouveaux champs de méta personnalisés. Ensuite, je tends la classe pour initialiser deux types de boîtes meta: un pour les diapositives, l'une pour la structure de diapositives. Je construirais aussi dans la structure de diapositive méta boîte la possibilité de créer dynamiquement de nouvelles boîtes de méta slide (les boîtes de méta slide abriterait leur propre action « supprimer »).

Le diaporama entier serait stocké non pas par les boîtes de méta diapositive, mais la boîte de méta structure de diapositives dans un champ de méta personnalisé pour le poste - méta personnalisé serait un tableau en dents de scie, avec chacune des diapositives représentées sous forme de tableaux dans il - pour . Personnalisation de l'ordre du diaporama dans la structure boîte de méta réorganiserait le tableau et Réenregistrez la méta post. De cette façon, je n'ai 1 valeur méta à relire quand je veux accéder au diaporama.

Entre SlideDeck, plus de champs, et le code personnalisé vous avez mis ensemble à ce jour, vous avez déjà la plupart de votre solution dans la main ... il vous suffit de le faire travailler tous ensemble en même temps. Je concentre sur l'obtention de la mise en œuvre de la racine vers le bas avant d'ajouter les embellissements JavaScript - cre dynamiquementAting, la modification, l'enregistrement et la suppression de diapositives est plus important qu'un éditeur de texte riche, l'OMI. Obtenez que fissurés en premier. Ensuite, récupérez le système de commande vers le bas. Ensuite vous pouvez vous concentrer sur l'obtention de plusieurs instances de TinyMCE travaillant sur la page.

Autres conseils

Je trouve cela, ce qui est exactement ce que vous êtes (je suis) recherche -> http://pippinsplugins.com/drag-and-drop-order-for-plugin-options/

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top