簡體   English   中英

如何在我的自定義帖子類型中由 ACF 生成的下拉列表中顯示類別描述字段?

[英]How do I display the Category description field within the dropdown generated by ACF in my custom post type?

在編輯此類型的帖子時,我正在使用自定義帖子類型在其自身中顯示分類類別,並且我希望下拉列表(或者可能是其他選擇方式)也能夠顯示描述字段類別,以便簡單的“區域 1”、“區域 2”可以解釋這些區域中包含哪些地理區域。

為 CPT 設置分類非常簡單,

    $clubregions = array(
        'labels' => array(
            'name' => 'Club Regions',
            'singular_item' => 'Club Region',
            'add_new_item' => 'Add New Club Region',
            'edit_item' => 'Edit Club Region',
        ),
        'hierarchical' => true,
        'public' => true,
        'show_ui' => true,
        'show_admin_column' => true,
        'show_in_nav_menus' => false,
        'show_in_rest' => false,
        'show_tagcloud' => false,
    );
    register_taxonomy( 'clubregions', array( 'clubdetails' ), $clubregions );

但是如何獲取 ACF Pro 生成的頁面來編輯自定義帖子類型,以使用描述字段?

ACF 生成的區域下拉列表的屏幕截圖


現在,您可能會想,“只需保存為草稿,go 備份到 CPT 頂層並單擊類別以閱讀說明”,但是我們還使用 Publishpress Capabilities Manager 來限制訪問此自定義帖子的用戶類型,因此他們無法從該級別看到類別部分。

在這種情況下,您需要超出 ACF 默認提供的自定義功能,這是創建新字段類型的絕佳機會。

ACF 提供官方字段類型模板,可在 github 獲得,以加快新字段類型的開發。 這包括您需要的所有文件,並具有出色的內聯注釋,可引導您完成整個過程。 它還包含您可以使用的所有可能的功能。

還有很多很棒的教程,比如這個,關於如何使用這個插件來創建你自己的自定義字段。

作為總結,您需要創建一個自定義方法,例如。 get_regions ,返回所有可用區域並將其注冊為字段選項。 您可以在create_options()方法中執行此操作,如下所示:

do_action('acf/create_field', array(
    'type'      =>   'select',
    'name'      =>   'fields['.$key.'][initial_value]',
    'value'     =>   $field['initial_value'],
    'choices'   =>   $this->get_regions()
));

然后一切都將歸結為創建用戶將實際看到的控件。 這是在create_field()方法中完成的。 您需要為<select>字段創建 HTML ,您可以在其中為每個選項添加更多數據:

function create_field( $field ) {
    $field = array_merge($this->defaults, $field);
    ?>
    <div>
        <select name='<?php echo $field['name'] ?>'>
            <?php
                foreach( $this->get_regions() as $region ) :
                    // get your $description here
            ?>
                <option <?php selected( $field['value'], $region ) ?> value='<?php echo $country ?>'>
                    <?php echo $region . ' - ' . $description; ?>
                </option>
            <?php endforeach; ?>
        </select>
    </div>
    <?php
}

您當然可以選擇不同的元素,例如復選框或單選按鈕,而不是select

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM