获取Post_Parent以在Get_Posts args中使用slug

时间:2017-01-23 17:16:30

标签: wordpress meta-boxes

我有一些正在检查post_parent ID的args将子页面添加到元数据库的选择菜单中。

但是我不想使用页面的ID,因为这可能会改变,但slug总是一样的。

        // POST
        array(
            'name'        => esc_html__( 'Select the previous page for the button link', 'uhd' ),
            'id'          => "{$prefix}prev_target",
            'type'        => 'post',
            // Post type
            'post_type'   => 'page',
            // Field type, either 'select' or 'select_advanced' (default)
            'field_type'  => 'select_advanced',
            'placeholder' => esc_html__( 'Select an Item', 'uhd' ),
            // Query arguments (optional). No settings means get all published posts
            'query_args'  => array(
                'post_status'    => 'publish',
                'posts_per_page' => - 1,
                'post_parent'   => 18,
            ),
        ),

使用与https://codex.wordpress.org/Template_Tags/get_posts

相同的参数

1 个答案:

答案 0 :(得分:1)

您可以使用get_page_by_path()获取所需slug的帖子ID,然后将结果传递给args。例如:

$parent_post = get_page_by_path( 'full/slug' );

$args = array(
    [...]
    'query_args' => array(
        'post_parent' => $parent_post->ID,
    ),
);

如果这是一个自定义帖子类型,您还需要传递它:

$parent_post = get_page_by_path( 'full/slug', OBJECT, 'post-type' );

所有这一切都说,通常一个帖子的slu is是可以改变的东西,而不是它的ID。也许您有一些独特的使用场景,但slug是用户可编辑的(或插件可编辑),而帖子ID在创建帖子后保持不变。