仅在ACF关系选择框中显示特定页面ID的子页面

问题描述 投票:0回答:1

我正在建立一个音乐课公司。我有一个主要的“团队”页面,每个音乐导师都有一堆子页面,上面有一些ACF内容。在网站上还有一个“课程”页面,这是一个单页,其中包含所有仪器,每个仪器打开一个模式框,在点击时显示一些信息,部分信息包括以下信息:

  • 哪些导师教授该具体工具
  • 导师的名字
  • 导师的照片
  • 指向教师子页面的链接

使用ACF我已经设置了一个初始关系选择框以启动所有内容,客户端可以进入课程页面并选择哪些导师教授哪种乐器,这很棒但是为了减少人为错误的机会我只喜欢我的客户能够从“团队”页面下的子页面中进行选择。

ACF文档确实提供了一些帮助,但这只是选择您当前正在编辑的特定页面的子父级 - found here

我已经尝试将函数编辑为这样,因此它只显示特定页面ID的子页面(在本例中为11)。

function my_relationship_query( $args, $field, $post_id ) {

// only show children of the current post being edited
$args = array(
'post_parent' => 11,
'post_type'   => 'any', 
'numberposts' => 10,
'post_status' => 'any' 
);
$children = get_children( $args );  

// return
return $args;

}

// filter for every field
add_filter('acf/fields/relationship/query', 'my_relationship_query', 10, 3);

但它没有做我想做的事,哈哈。我在绞尽脑汁。我的PHP经验还处于青春期,所以任何有关我出错的地方的帮助或建议都将成为现实。谢谢!

php wordpress advanced-custom-fields
1个回答
0
投票

看起来你正在返回$args而不是$children。尝试这样的事情:

function my_relationship_query( $args, $field, $post_id ) {

    $args = array(
        'post_parent' => $post_id, // updated to use the current $post_id
        'post_type'   => 'any', 
        'numberposts' => 10,
        'post_status' => 'any' 
    );

    $children = get_children( $args );  

    // return
    return $children; // updated to return $children

}

// filter for every field
add_filter('acf/fields/relationship/query', 'my_relationship_query', 10, 3);
© www.soinside.com 2019 - 2024. All rights reserved.