it-swarm.com.de

Zeigt alle benutzerdefinierten Werte eines mit ACF erstellten Felds auf einer Seite an

Ich verwende Erweiterte benutzerdefinierte Felder/ACF , um benutzerdefinierte Felder zu erstellen. Eines davon ist eine Liste von Kontrollkästchen, die einige Optionen anzeigen (Option1, Option2, Option3 ...) .

Jetzt möchte ich alle Optionen dieses Feldes auf einer separaten Seite im Frontend wie folgt anzeigen:

Optionen:
- Option 1
- Option 2
- Option 3
- ...

Wie kann ich alle Optionen mit Schlüsseln von ACF abrufen?

9
Bob

Mit der Funktion get_field_object ACF können Informationen und Optionen für ein bestimmtes Feld abgerufen werden.

Zunächst benötigen Sie den Feldschlüssel des jeweiligen Feldes, das Sie ausgeben möchten. Klicken Sie beim Bearbeiten einer Feldgruppe oben auf der Seite auf die Registerkarte Bildschirmoptionen. Sie sollten eine Option zum Umschalten der Anzeige des Feldschlüssels sehen (standardmäßig ausgeblendet, um Platz zu sparen):

Field Key

Sobald Sie den Schlüssel haben, können Sie das Feldobjekt laden und seine Werte ausgeben:

$field_key = "field_5039a99716d1d";
$field = get_field_object($field_key);

if( $field )
{
    echo '<select name="' . $field['key'] . '">';
        foreach( $field['choices'] as $k => $v )
        {
            echo '<option value="' . $k . '">' . $v . '</option>';
        }
    echo '</select>';
}
15
Milo

Wenn Sie versuchen, etwas auszugeben, wenn ein Kontrollkästchen aktiviert ist, verwenden Sie:

<?php if(in_array('news', get_field('checkbox') )): ?>
    <h1>News was ticked!</h1>
<?php endif; ?>

Wenn Sie nur eine Liste der aktivierten Optionen anzeigen möchten, verwenden Sie Folgendes:

<p>Categories: <?php get_field('checkbox'); ?></p>

Dadurch erhalten Sie eine Reihe von Werten, die Sie mit einer foreach -Deklaration verwalten können. Wenn Sie the_field('checkbox') verwenden, erhalten Sie eine durch Kommas getrennte Zeichenfolge der Optionen, die Sie ebenfalls aufteilen können.

Ich würde auch vorschlagen, dass Sie zu ACFs Website gehen und die Dokumentation durchgehen. Die meisten Fragen dieser Art werden dort ausführlich beantwortet, und der Entwickler ist auch in seinen Support-Foren aktiv.

BEARBEITEN: Wenn Sie die Liste der verfügbaren Optionen in eine Seite zum Generieren einer dynamischen Abfrage ausgeben möchten, habe ich genau das Richtige. Dies ist ein Teil, den ich gestern erstellt habe, um eine Liste von Metawerten aus einem bestimmten benutzerdefinierten Feldschlüssel (unter Verwendung von ACF) abzurufen. Ich habe es ziemlich allgemein für Sie gemacht. Es gibt einen weiteren Teil von JS für die Bearbeitung der Ajax-Anfrage und einen ziemlich verworrenen Teil von PHP, der die resultierenden Posts ausgibt. Ich kann diese nicht wirklich umschreiben - das JS ist die standardmäßige WP vorwärtsgerichtete Ajax-Antwort und das PHP ist ein Durcheinander von bedingten Prüfungen für die 12 verschiedenen ACF-Felder, die wir anzeigen (2) davon sind Repeater). Die Grundlagen sind hier dieser Code, die Schaltfläche onClick ruft die Ajax-Funktion in einer separaten JS-Datei auf, und die PHP-Funktion für die Ajax-Funktion selbst richtet im Wesentlichen ein Array von Argumenten für die Abfrage ein, von denen eines $selectedOption oder $_POST['option'] als Meta_wert ist. Das wird einer new WP_Query( $args ); zugeführt, die dann in einer Schleife verwendet wird, deren Ausgabe über add_action('wp_ajax_the_ajax_hook', 'fetch_option_list'); und add_action( 'wp_ajax_nopriv_the_ajax_hook', 'fetch_option_list' ); //for non logged-in users an js zurückgeführt wird.

 // Get list of meta_values for given meta_key and post_type (page, post, custom post type)
 function meta_list($key = '', $type = '', $status = 'publish'){
 global $wpdb;
    $r = $wpdb->get_col($wpdb->prepare( "
    SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = '%s'
    AND p.post_status = '%s'
    AND p.post_type = '%s'
    ORDER BY pm.meta_value ASC", $key, $status, $type));
    return $r;
}

 // ADD EG A FORM TO THE PAGE
 function meta_ajax_frontend(){
    $formlist = meta_list('metakey', 'posttype');
    echo '<form id="optionSelect">';
    echo '<select id="optionList" name="optionList">';
    foreach($formlist as $fl => $val) {
        echo '<option>' . $val . '</option>';
    }
    echo '</select>';
    echo '<input name="action" type="hidden" value="the_ajax_hook" />
    <input id="submit_button" value = "Search" type="button" onClick="fetch_meta();" />
    </form>
    <div id="meta_list">
    Please select an option from the list
    </div>';
 }
0
SickHippie