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

Jay*_*pee 7 wordpress advanced-custom-fields

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

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

流

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

该函数看起来像这样,我用作为参考

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');
Run Code Online (Sandbox Code Playgroud)

我正确地列出了选项(选项是图像),我成功地icon从主博客中取出了该字段并将其作为无线电标签和值.

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

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

而我得到的是:

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

  • 正确的形象

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

等等.

如果你们中的任何人需要更多的澄清来帮助我解决这个问题,我很乐意进一步解释.

Dee*_*dey 1

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

在切换到主博客之前获取当前博客 ID$current_site =get_current_blog_id();

一旦你完成了。使用将其切换回来

switch_to_blog( $current_site );
$GLOBALS['_wp_switched_stack'] = array();
$GLOBALS['switched']           = FALSE; 
Run Code Online (Sandbox Code Playgroud)