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?
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' );
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;
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!