在多站点安装上动态填充ACF字段(无线电)

时间:2014-06-03 19:46:53

标签: wordpress advanced-custom-fields

我正在尝试填充高级自定义字段的无线电字段,从多站点安装主博客中的自定义帖子类型中提取数据。

为了更好地理解,我制作了这个简单的流程图。

Flow

所以我创建了一个函数,以便从主博客中提取数据并在子网站上显示为广播项目。

该函数如下所示,我使用this作为参考

function getctas($field) {
    $field['choices'] = array();

    switch_to_blog(1);

    $args = array(
            'post_type' => 'location_icons',
            'posts_per_page' => '-1',
         );

        $ctas = new WP_Query( $args );

        while ( $ctas->have_posts()) {
            $ctas->the_post();

            $choices = get_field('icon',false);

            $choices = explode("\n", $choices);

                    foreach( $choices as $choice ):

                        $field['choices'][ $choice ] = '<img src="'.$choice.'"/>';

                    endforeach;

        }
        restore_current_blog();
        return $field;

}
add_filter('acf/load_field/name=call_to_action_icon', 'getctas');

我正确列出了选项(选项是图片),我成功从主博客中取出了icon字段并将其作为广播标签和值。

我遇到的问题是,当我在孩子的页面模板上查询帖子时保存帖子后,我得到了正确的图片,但重复了博客1上帖子的标题。理想的是:

  • 图片
  • 儿童博客帖子的标题
  • 儿童博客文章的描述

而我的意思是:

  • 正确的图像
  • 包含博客1上的图片的CTP标题
  • 没有说明

  • 正确的图像

  • 与前一个相同的标题
  • 没有说明

等等。

如果您需要更多说明来帮我解决这个问题,我很乐意进一步解释。

1 个答案:

答案 0 :(得分:1)

请在切换到主博客之前声明global $switched;,如果在声明全局变量后它不起作用,似乎wp没有将其切换回当前博客,请试试这个

在切换到主要博客$current_site =get_current_blog_id();

之前获取当前博客ID

一旦完成。使用

将其切换回来
switch_to_blog( $current_site );
$GLOBALS['_wp_switched_stack'] = array();
$GLOBALS['switched']           = FALSE;