Bir sayfada ACF ile oluşturulan özel alanın tüm değerlerini görüntüleme


9

Özel alanlar oluşturmak için Gelişmiş Özel Alanlar / ACF kullanıyorum . Bunlardan biri, bazı seçenekleri (seçenek1, seçenek2, seçenek3 ...) görüntüleyen onay kutularının bir listesidir .

Şimdi bu alanın tüm seçeneklerini ön uçta ayrı bir sayfada görüntülemek istiyorum:

Seçenekler:
- seçenek 1
- seçenek 2
- seçenek 3
- ...

ACF'nin tuşlarıyla tüm seçenekleri nasıl alabilirim?


Lütfen tam olarak neyi başarmaya çalıştığınız konusunda biraz daha net olun. ACF, ön uç girişine izin vermemek için ön uçtaki özel alanların çıkışını göstermek için tasarlanmıştır.
SickHippie

Yanıtlar:


16

get_field_objectACF işlevi belirli bir alan için bilgi ve seçenek almak için kullanılabilir.

Öncelikle, çıktısını almak istediğiniz alanın alan anahtarına ihtiyacınız vardır. Bir alan grubunu düzenlerken, sayfanın üst kısmındaki ekran seçenekleri sekmesini tıklayın. Alan tuşunun görüntüsünü değiştirmek için bir seçenek görmelisiniz (yerden tasarruf etmek için varsayılan olarak gizlidir):

Alan Anahtarı

Anahtarı aldıktan sonra, alan nesnesini yükleyebilir ve değerlerini çıktılayabilirsiniz:

$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>';
}

Adı kullanmak, anahtarı kullanmak kadar kolay olsaydı iyi olurdu. bu şekilde bir eklentiye sahipseniz ve acf etkinleştirilmiş başka bir WordPress örneğinde test etmek için gerekliyse, anahtarı
avlamanız

0

Bir onay kutusu işaretliyse bir şey çıkarmaya çalışıyorsanız, şunu kullanın:

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

Yalnızca işaretli seçeneklerin bir listesini görüntülemeye çalışıyorsanız, bunu kullanın:

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

Bu, bir foreachbildirimle yönetebileceğiniz bir değerler dizisi verecektir . Kullanmak the_field('checkbox'), bölebileceğiniz seçeneklerin virgülle ayrılmış bir dizesini verecektir.

Ayrıca ACF'nin sitesine gitmenizi ve belgeleri gözden geçirmenizi öneririm . Bu tür soruların çoğu orada ayrıntılı olarak cevaplanacaktır ve geliştirici destek forumlarında da aktiftir.

EDIT: Dinamik bir sorgu oluşturmak için bir sayfaya çıktı kullanılabilir seçenekler listesi istiyorsanız, sadece bir şey var. Bu, belirli bir özel alan anahtarından (ACF kullanarak) meta değerleri listesini çekmek için dün oluşturduğum bir parçadır. Senin için oldukça genel yaptım. Ajax isteğini işlemek için bir başka JS parçası ve ortaya çıkan yayınları çıkaran oldukça kıvrımlı bir php parçası var. Bunları gerçekten yeniden yazamıyorum - JS, standart WP ileriye dönük ajax çağrısı / yanıtı ve PHP, 12 farklı ACF alanı (2'si tekrarlayıcı) için koşullu kontroller karışıklığı. Temel bilgiler burada bu kod, düğme onClickayrı bir JS dosyasında ajax işlevini çağırır ve ajax işlevinin kendisi için php aslında sorgu için bir dizi argüman ayarlar,$selectedOptionveya $_POST['option']meta_value olarak. Bu bir beslenir alır new WP_Query( $args );sonra bir döngüde kullanılan,, çıkışı ile js için geri beslenir alır add_action('wp_ajax_the_ajax_hook', 'fetch_option_list');ve add_action( 'wp_ajax_nopriv_the_ajax_hook', 'fetch_option_list' ); //for non logged-in users.

 // 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>';
 }

Mm, ben bunu yaparsanız, ben "post" atandı seçenekleri çıktısı olacak, ben bir "sayfa" tüm seçenekleri seçenekleri tam bir liste olarak göstermektir.
Bob

Neden arka ucun ön tarafta gösterilen seçenek listesine ihtiyacınız olduğunu merak ediyorum. Seçenekler listesini yalnızca yöneticide seçilen öğeler seçili olarak görüntülemek istiyor musunuz? Bunu bir formun parçası olarak kullanmaya çalışıyorsanız (kullanıcının kontrol edilen verilerin değiştirilmesine izin verir), bu doğru eklenti veya yöntem değildir. Ancak, seçenek listesini sorguyu yeniden yazmak için ön filtre olarak kullanmak istiyorsanız, sizin için sadece bir şey olabilir. Yukarıdaki yazımı kısa süre içinde bu kodla düzenleyeceğim.
SickHippie

Merhaba im Bob başka bir acc, ben onlarla "menü" bir tür oluşturmak için arka ucun seçenekleri gerekir. Kodunuzun gönderileri ve bunlara atanan seçenekleri aldığını düşünüyorum. Sadece bir yazı oluşturduğunuzda arka uçta görünen gibi bir seçenek listesine ihtiyacım var. Ben bir şey anlayabilir miyim görmek için kod ile çalışmaya devam. @SickHippie
Dunning-Kruger

Hayır, bu onay kutusundan seçilen seçeneklerin listesini çeker - yani "işte onay kutusu," seçenek 1 "," seçenek 2 "," seçenek 4 "değerlerine atanmış yayınlar var Kelimenin tam anlamıyla sadece bu meta_key dayalı meta_value listesini çeker.Dinamik bir liste için gerekli, ancak bir taslak posta oluşturduğunuzda tüm onay kutuları seçilecek tüm seçenekleri sizin için bir dizide dışarı çekecektir. Ben foreachsonraki döngü ajax aracılığıyla mesajların listesini getirmek, ama ben bu bit dışarıda
SickHippie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.