web-dev-qa-db-fra.com

Saisie semi-automatique pour les zones de saisie de taxonomie sur un formulaire frontal

J'ai créé un simple formulaire frontal permettant aux utilisateurs de soumettre des messages - semblable au tutoriel présenté ici - http://voodoopress.com/ . J'ai aussi quelques taxonomies personnalisées que j'ai comme zones de saisie de texte sur mon formulaire. Tout cela fonctionne, mais je me demandais s’il existait un moyen d’utiliser tous les champs, y compris Post Title et les taxonomies pour suggérer automatiquement les valeurs existantes.

merci

2
coolGeek

Ok pas sûr si c'est la meilleure méthode à utiliser mais ça a fonctionné pour moi. J'ai utilisé une combinaison de jquery-ui-autocomplete - et du plugin JSON API

Commencez par télécharger les fichiers js requis à partir du lien ci-dessus. J'ai utilisé jqueri-ui de la bibliothèque Google. Installez et activez le plug-in JSON API.

J'ai ensuite utilisé le code javascript suivant pour suggérer automatiquement lors de la saisie dans le champ de saisie "titre" de mon formulaire de publication personnalisé.

<script type="text/javascript">
$(function() {
        $('#title').autocomplete({
        source: function( request, response ) {
        $.ajax({
                url: "http://example.com/?json=1&include=title",
                dataType: "json",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
            success: function( data ) {
            response( $.map( data.posts, function( item ) {
                return {
                            label: item.title,
                            value: item.title
                        }
                    }));
            }
            });
        },
        minLength: 2,
    });
});     
</script>

La prochaine étape consiste à faire en sorte que cela fonctionne avec des taxonomies personnalisées!

1
coolGeek

J'ai passé un peu de temps à creuser le sujet et je pense avoir trouvé votre solution! Il semble que le paramètre name__like de get_terms() soit le bon choix. La requête de name__like est la suivante (à partir de la ligne 1304 de /wp-includes/taxonomy.php): $wpdb->prepare( " AND t.name LIKE %s", $name__like . '%' );. Il prendra ce que vous lui donnez comme paramètre name__like et y ajoutera un caractère générique SQL, %. Cela signifie qu'il recherchera tout ce qui COMMENCE avec ce que vous lui donnez.

Cela règle assez bien l’obtention des données ... malheureusement, il n’arrive pas à les transmettre au javascript. Je ne sais pas exactement comment vous gérez cet aspect de l'insertion, mais je pense que je distribuerais un tableau contenant uniquement les noms et laisserais la distinction entre "est-ce que je crée un nouveau terme ou utilise l'ancien? être traité lors de la soumission. Si vous me dites quelles parties de ceci ne sont pas claires (je suis sûr qu'il y en aura), je peux essayer de vous donner un pseudo-code, mais je n'ai pas le temps de tout écrire, malheureusement.

0
mor7ifer