Filter zum acf-Beziehungsfeld hinzufügen

Lesezeit: 1 Minute

Benutzer-Avatar
Carol.Kar

ich benutze wordpress 4.9.7 und ich benutze advanced custom fields 4.4.12.

In meinem Backend habe ich einen Beitragstyp, der aufgerufen wird coinsdas ein Beziehungsfeld namens hat related_coins und ein Textfeld, das aufgerufen wird algorithm. Grundsätzlich erstellt mein Beziehungsfeld eine Beziehung zum benutzerdefinierten Beitragstyp products. Das Produkt kann also eine Beziehung zu mehreren Coins haben.

Ich kann derzeit nur nach Beitragstyp filtern. Ich möchte jedoch nach dem benutzerdefinierten Feld filtern algorithm des Beitragstyps coin.

Geben Sie hier die Bildbeschreibung ein

Folgendes habe ich versucht:

function graphic_card_products_query( $args, $field, $post_id ) {

    $args['meta_query'] = array(
        array(
        'key' => 'algorithm', // name of custom field
        'value' => 'related_coins',
        'compare' => 'LIKE'
        )
    )

    // return
    return $args;

}

// filter for every field
add_filter('acf/fields/relationship/query/name=related_coins', 'graphic_card_products_query', 10, 3);

Grundsätzlich versuche ich, eine Liste aller Werte zu erhalten, die das benutzerdefinierte Feld enthält algorithm hat und übergebe es als Filteroption zurück an das Beziehungsfeld related_coin.

Aktuell bekomme ich nichts zurück.

Irgendwelche Vorschläge, was ich falsch mache?

  • Anscheinend hat sich hier ein Tippfehler eingeschlichen… 'acf/fields/relationship/query/name=graphic_card_productss' <-- es gibt zwei "s" am Ende

    – BA_Webimax

    6. Juli 2018 um 15:10 Uhr

  • @BA_Webimax Danke für deine Antwort! Ich bekomme jedoch immer noch nicht alle eindeutigen Feldwerte zum Filtern in meinem Beziehungsfeld. Ich vermute, es gibt irgendwie ein Problem mit meiner Abfrage. Irgendein Vorschlag, wie man es ändert? Ich schätze Ihre Antworten!

    – Carol.Kar

    6. Juli 2018 um 17:10 Uhr

  • Möchten Sie Produkte nach benutzerdefiniertem Beitragstyp filtern, die sich auf benutzerdefinierte Felder beziehen, richtig?

    – Gufran Hassan

    14. Juli 2018 um 5:49 Uhr

Benutzer-Avatar
dafoxuk

Ich habe dies mit Ihrem Code als Basis getestet und kann bestätigen, dass es für mich funktioniert. Ich werde detailliert beschreiben, was ich getan habe.

Erstens haben Sie es vielleicht entdeckt, aber Ihnen fehlt ein Semikolon nach Ihrem meta_query. Also habe ich das behoben.

$args['meta_query'] = array(
    array(
    'key' => 'algorithm', // name of custom field
    'value' => 'related_coins',
    'compare' => 'LIKE'
    )
); // <-- this one!

Als Nächstes stellte ich sicher, dass das Feld, das ich filterte, tatsächlich ein „Relationship“-Feld war und nicht einer der anderen „relationalen“ Feldtypen (z. B. Post-Objekt, Links, Taxonomie). Sie haben ihre eigenen Filter (ACF-Referenz: Filter)

Zuletzt bestätigte ich, dass die meta_query korrekt war und was ich erwartet hatte. Ihre meta_query sucht also nach Produkten mit dem benutzerdefinierten Feld „algorithm“ und einem Wert von 'related_coins'. (Es kann gut sein, aber stellen Sie sicher, dass der gewünschte Wert ist 'related_coins' da das eher nach einem Schlüssel klingt, nicht nach einem Wert). Sie verwenden dann den LIKE-Operator, der Werte mit „related_coins“ abgleicht, die im Wert enthalten sind. Zum Beispiel wird es passen '123_related_coins' und 'related_coins_123'sowie nur ‘related_coins’.

Wie gesagt, das ist vielleicht das, was Sie wollen, aber verstehen Sie, dass die Meta-Abfrage das bedeutet.

Hoffe das hilft!

1369170cookie-checkFilter zum acf-Beziehungsfeld hinzufügen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy