web-dev-qa-db-fra.com

Type de message personnalisé et champ personnalisé WP_Query

Je développe un site pour un client qui est un club de football pour jeunes (soccer), avec de nombreuses équipes différentes en fonction des capacités et de l'âge des enfants. J'ai ajouté un type de message personnalisé appelé Rapports de match afin que les responsables de chaque équipe puissent se connecter et rédiger des messages pour leurs derniers matchs auxquels leurs équipes ont participé.

J'ai aussi une section Nouvelles qui utilise la partie standard de WP dans Posts. J'ai écrit un code court qui affichera les nouvelles sur la page d'accueil. Ce que je veux pouvoir faire, c’est d’activer un système dans lequel l’un des rapports de correspondance peut être ajouté à la page d’accueil en sélectionnant une option à l’aide du plug-in Advanced Custom Fields. Il s’agit d’un formulaire de bouton radio à deux options, avec true/false. valeurs - Afficher sur la page d'accueil? Oui Non.

Dans mon shortcode Nouvelles, j'ai ajouté le type de publication personnalisée de rapports de correspondance, qui fonctionne parfaitement, mais je ne sais pas comment afficher uniquement les rapports avec le bouton radio "Afficher sur la page d'accueil - Oui" sélectionné. Voici mes paramètres de requête:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_key" => "show_in_news",
    "meta_value" => "true"
);

Le problème, c’est que, les postes standard n’ayant pas de champ personnalisé, seuls les rapports de correspondance s’affichent. Si je supprime les requêtes de champ personnalisé, tous les rapports de correspondance ainsi que les messages sont affichés. J'en ai besoin pour afficher uniquement les rapports de correspondance avec show_in_news (mon champ personnalisé avec des boutons radio, créés avec des champs personnalisés avancés, avec une valeur de true, ainsi que tous les articles.

Quelqu'un peut m'aider? Merci beaucoup si oui :)

1
Tom Oakley

Actuellement, votre méta requête est exclusive et vous devez la rendre inclusive. Par exemple, vous pouvez enregistrer toujours le champ méta show_in_news pour le type de publication personnalisé de match match, même lorsque la valeur est false. Ensuite, vous pouvez inclure des publications si show_in_news personnalisé n'existe pas (publications standard) ou s'il existe et qu'il s'agit de "true" pour le type de publication personnalisé:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_query" => array( 
        "relation" => "OR",
        array(
            "key" => "show_in_news",
            "compare" => "NOT EXISTS",
        ),
        array(
            "key"   => "show_in_news",
            "value" => "true",
        ),
    ),
);

Cela devrait faire le travail.

1
cybmeta