it-swarm.com.de

Benutzerdefinierter Beitragstyp und benutzerdefiniertes Feld WP_Query

Ich entwickle eine Website für einen Kunden, der ein Jugendfußballverein ist, mit vielen verschiedenen Teams, abhängig von den Fähigkeiten und dem Alter der Kinder. Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen "Spielberichte" hinzugefügt, damit sich die Manager jedes Teams anmelden und Beiträge für die letzten Spiele schreiben können, an denen ihre Teams beteiligt waren.

Ich habe auch einen News-Bereich, der den Standard-Posts-Teil von WP verwendet. Ich habe einen Shortcode geschrieben, der die News auf der Homepage anzeigt. Ich möchte in der Lage sein, ein System zu aktivieren, in dem einer der Übereinstimmungsberichte zur Homepage hinzugefügt werden kann, indem Sie eine Option mit dem Plug-in "Erweiterte benutzerdefinierte Felder" auswählen. Dabei handelt es sich um ein Optionsfeld mit zwei Optionen (true/false) Werte - Auf Homepage anzeigen? Ja Nein.

In meinem News-Shortcode habe ich den benutzerdefinierten Beitragstyp für Spielberichte hinzugefügt, der einwandfrei funktioniert. Ich bin mir jedoch nicht sicher, wie ich die Berichte nur mit dem ausgewählten Optionsfeld "Auf Homepage anzeigen - Ja" anzeigen soll. Hier sind meine Abfrageparameter:

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

Das Problem dabei ist, dass in den Standard-Posts nicht das benutzerdefinierte Feld angezeigt wird, sondern nur die Übereinstimmungsberichte. Wenn ich die benutzerdefinierten Feldabfragen entferne, werden alle Übereinstimmungsberichte zusammen mit den Posts angezeigt. Ich brauche es, um nur die Übereinstimmungsberichte mit show_in_news (mein benutzerdefiniertes Feld mit Optionsfeldern, die mit erweiterten benutzerdefinierten Feldern erstellt wurden, mit dem Wert true zusammen mit allen Beiträgen) anzuzeigen.

Kann mir jemand weiterhelfen? Vielen Dank wenn ja :)

1
Tom Oakley

Derzeit ist Ihre Meta-Abfrage exklusiv und Sie müssen sie inklusiv machen. Beispielsweise können Sie immer das Metafeld show_in_news für einen benutzerdefinierten Beitragstyp für Übereinstimmungsberichte speichern, auch wenn der Wert false ist. Anschließend können Sie Beiträge einfügen, wenn der benutzerdefinierte show_in_news nicht vorhanden ist (Standardbeiträge) oder wenn er vorhanden ist und der benutzerdefinierte Beitragstyp "true" lautet:

$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",
        ),
    ),
);

Dies sollte den Job machen.

1
cybmeta