J'ai créé un type d'article personnalisé auquel j'ai attaché des champs personnalisés. J'aimerais maintenant que la recherche que les auteurs puissent effectuer sur l'écran de liste de publication personnalisée (dans le backend de l'administrateur) soit également effectuée sur les champs méta et non seulement dans le titre et le contenu, comme d'habitude.
Où puis-je m'accrocher et quel code je dois utiliser?
Exemple d'image
Stefano
custom-post-types
custom-field
search
Stefano
la source
la source
Réponses:
J'ai résolu le filtrage de la requête en ajoutant la jointure sur la table postmeta et en modifiant la clause where. des astuces sur le filtrage de la clause WHERE (qui nécessitent souvent une expression régulière, rechercher et remplacer) figurent ici dans le codex :
la source
Stefano répond que c'est génial mais qu'il manque une clause distincte:
Ajoutez le code ci-dessus, mettez-le à jour et cela fonctionnera sans doublons.
la source
Cela fonctionnera
la source
if ( $query->query['post_type'] != 'your_custom_post_type' ){ return; }
haut en haut de la fonction empêchera l'exécution de cette recherche sur d'autres recherches. Notez que la technique dans cette réponse ne cherche plus le post_title et l'ajouter n'est pas trivial.get_search_query()
les appels suivantsget_query_var( 's' )
. Puisque "s" est défini sur une chaîne vide, les résultats de la recherche pour "" auront toujours une valeur vide entre les guillemets. Y at-il un ajustement à cette solution qui contourne cela?Réponse 1: Ajoutez ce code dans le fichier de fonction, puis changez et ajoutez d'autres noms de colonnes, que vous avez utilisés dans votre type d'article personnalisé
Réponse 2: Recommandé Utilisez ce code dans le fichier de fonction sans aucune modification
la source
Ce n'est pas une recherche, mais certains "sélectionnent" par valeur distincte.
Dans le fichier functions-iworks-posts-filter.zip, vous avez un exemple qui explique comment ajouter un filtre pour les messages normaux avec une méta_key. Je pense que c'est facile à convertir.
la source
La version du code ici dans quelques réponses modifiant le paramètre meta_query du WP_Query de la recherche dans pre_get_posts ne cherchait plus le post_title. L'ajout de la possibilité de rechercher soit le titre de l'article, OU les méta-valeurs ne peut pas être effectué directement dans WP_Query sans modification du code SQL, car cette question précise : Utilisation de la méta-requête ('meta_query') avec une requête de recherche ('s')
J'ai combiné certaines des techniques ici pour obtenir une version de travail qui évite preg_replaces et trop de modifications SQL (j'espère que cela pourrait être entièrement évité). Le seul inconvénient est qu'après une recherche, le texte du sous-titre en haut de la page indique "Résultats de la recherche pour ''". Je viens de cacher cela avec CSS pour le type de publication personnalisé de mon plugin.
la source