webentwicklung-frage-antwort-db.com.de

Wert in benutzerdefiniertem Feld mit Taxonomie abrufen

Ich habe ein benutzerdefiniertes Feld my_cf für Taxonomie/Begriff. Wie kann ich einen Wert mit einem benutzerdefinierten Feld für Taxonomie/Begriff abrufen und ausgeben?

Ich habe versucht mit:

$variable = get_field('my_cf', 'basic'); 
  echo $variable; 

wo grundlegender Name für meine Taxonomie. Das geht aber nicht.

Irgendwelche Vorschläge?

5
John Genry

Ich kann es nicht besser erklären als die ACF-Dokumentationsseite, die ich in den Kommentaren gepostet habe :

Alle API-Funktionen können mit einem Taxonomiebegriff verwendet werden. Ein zweiter Parameter ist jedoch erforderlich, um die Begriffskennung als Ziel festzulegen. Dies ähnelt der Übergabe einer post_id an ein bestimmtes post-Objekt.

Die benötigte $ post_id ist eine Zeichenfolge, die den Taxonomienamen + die Term-ID in diesem Format enthält: $ Taxonomiename_ $ TermID

Wenn Ihr benutzerdefiniertes Feld also my_cf lautet und Ihr Taxonomiename basic lautet (not term name) und die Term-ID in Ihrer Taxonomie 42 lautet, benötigen Sie:

$variable = get_field( 'my_cf', 'basic_42' );
3
Milo

Sind Ihre Felddaten in wp_options gespeichert? Wenn ja...

$term_id = 12345;
$term_meta = get_option( 'taxonomy_' . $term_id );
$my_cf = $term_meta[ 'my_cf' ];
echo $my_cf;
1
Joey Yax

Ich verwende CMB2 , um benutzerdefinierte Felder einzurichten, und die Logik unterscheidet sich in vielen Fällen nicht so sehr von der von ACF. Für meinen speziellen Anwendungsfall habe ich eine sehr einfache, aber flexible Funktion erstellt, um einige Überprüfungen der Taxonomie vorzunehmen, bevor das benutzerdefinierte Feld angezeigt wird.

Angenommen, Sie haben ein benutzerdefiniertes Feld mit dem Namen my_cf erstellt. Nehmen wir beispielsweise taxonomy named basic . Die folgende Funktion kann dazu beitragen, Ihre Frage zu beantworten und möglicherweise die Verwendung Ihres benutzerdefinierten Felds ein wenig zu erweitern .

function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {

    global $post;

    $terms = get_the_terms( $post->ID, $taxonomy );

    // Check if we have a taxonomy and that it is valid. If not, return false
    if ( !$taxonomy )
        return false;

    // Sanitize the taxonomy input
    $taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );

    // keep playing safe
    if ( !taxonomy_exists( $taxonomy ) )
        return false;

    foreach ( $terms as $term ) {
    // Set a variable for taxonomy term_id
    $tax_term_id = $term->term_id;

    $my_field = get_term_meta( $tax_term_id, 'my_cf', true ); 

    // Make sure we do not have a WP_Error object, not really necessary, but better be safe
    if ( is_wp_error( $term ) )
        continue;

        // escaping the returned value // esc_html(), esc_url(), esc_attr()

        return esc_html($my_field);

    }
}

Verwenden Sie einfach <?php get_taxonomy_terms_custom_fields ('basic'); ?> und ersetzen Sie basic durch Ihren eigenen Taxonomienamen.

Die Funktion get_taxonomy_terms_custom_fields () überprüft die angegebene Taxonomie und Art der Schleife durch alle Kategorien, die einem Post, post_type, zugewiesen sind, und gibt dann den Wert des benutzerdefinierten Felds zurück, falls vorhanden, um Fehler zu vermeiden, falls nicht. Es könnte auch erweitert werden, um nach einem Feld zu suchen, das ein Array () erzeugt, beispielsweise ein wiederholbares Feld.

Ich hoffe es hilft - Viel Glück!

1