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

时间:2017-12-19 20:05:51

标签: php wordpress advanced-custom-fields

我正在建立一个音乐课公司。我有一个主要的团队'每个音乐导师的页面都有一堆子页面,这里有一些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经验还处于青春期,因此任何有关我出错的地方的帮助或建议都将成为现实。谢谢!

1 个答案:

答案 0 :(得分: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);