php 使用帖子类型填充ACF复选框

ilmyapht  于 2023-01-16  发布在  PHP
关注(0)|答案(3)|浏览(97)

我试图填充一个复选框ACF字段与WP网站的各种职位类型。这是一个插件,所以职位类型将根据不同的安装位置。
默认情况下,插件使用页面和帖子作为它的帖子类型,但需要给用户选择使用复选框来选择其他CPT的网站上。我如何填充复选框字段与所有CPT的网站上的列表。这里是我目前的PHP代码部分加载插件内的字段

array (
    'key' => 'field_56e6d87b6c7be',
    'label' => 'Add to Custom Post Types',
    'name' => 'fb_pixel_cpt_select',
    'type' => 'checkbox',
    'instructions' => 'Select which Custom Post Types you would like to use.',
    'required' => 0,
    'conditional_logic' => 0,
    'wrapper' => array (
        'width' => '',
        'class' => '',
        'id' => '',
    ),
    'choices' => array (
    ),
    'default_value' => array (
    ),
    'layout' => 'vertical',
    'toggle' => 0,
),
9cbw7uwe

9cbw7uwe1#

您可以使用ACF加载字段功能来自动填充您的字段。更多信息请参见:http://www.advancedcustomfields.com/resources/acfload_field/
然后,使用Wordpressget_post_types调用(https://codex.wordpress.org/Function_Reference/get_post_types),您可以检索这些值并填充您的字段,如下所示。

add_filter('acf/load_field/name=fb_pixel_cpt_select', 'acf_load_post_types');

function acf_load_post_types($field)
{
    foreach ( get_post_types( '', 'names' ) as $post_type ) {
       $field['choices'][$post_type] = $post_type;
    }

    // return the field
    return $field;
}

不过,在尝试填充字段之前,请确保已经创建了该字段。

yrefmtwq

yrefmtwq2#

这将创建一个选择字段为您的ACF块或任何有所有的职位类型,除了那些没有导航菜单(如附件职位类型)。

add_filter('acf/load_field/name=select_post_type', 'yourprefix_acf_load_post_types');
/*
 *  Load Select Field `select_post_type` populated with the value and labels of the singular 
 *  name of all public post types
 */
function yourprefix_acf_load_post_types( $field ) {

    $choices = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' );

    foreach ( $choices as $post_type ) :
        $field['choices'][$post_type->name] = $post_type->labels->singular_name;
    endforeach;
    return $field;
}

6ss1mwsb

6ss1mwsb3#

当我需要这样做的时候(从帖子类型列表中选择),我通常会创建一个基于帖子类型的帖子列表,以馈送到WP查询中。所以我在ACF中使用一个选择字段,并在其中添加帖子类型名称,然后在WP查询的参数中使用。

相关问题