如何在选项列表中显示某个自定义岗位类型的孩子?

时间:2021-04-16 作者:saeed

我有一个自定义帖子类型,这个自定义帖子类型中的每个帖子都有许多子帖子。我有一个代码,可以显示子页面中父级的每个子级。(父:post 1,子:sub1 post,sub2 post。sub1 post中显示sub1 post和sub2 post标题和永久链接)代码为:

<?php
if ( $post->post_parent ) {
    $children = wp_list_pages( array(
        \'title_li\' => \'\',
        \'child_of\' => $post->post_parent,
        \'echo\'     => 0,
        \'post_type\' => \'mycustom\'
    ) );
} else {
    $children = wp_list_pages( array(
        \'title_li\' => \'\',
        \'child_of\' => $post->ID,
        \'echo\'     => 0,
        \'post_type\' => \'mycustom\'
    ) );
}

if ( $children ) : ?>
    <ul>
        
        <?php echo $children; ?>
    </ul>
<?php endif; ?>
以上代码工作正常。现在,我希望此代码以选择和选项模式显示子级列表。例如:

<select>
<option>sub1-post</option>
<option>sub2-post</option>
</select>
但我想动态回应。(如echo $children 但在选项中)。

霍普描述得很好。

1 个回复
最合适的回答,由SO网友:anton 整理而成

尝试使用wp_dropdown_pages而不是wp_list_pages
此函数的作用几乎相同,但返回一个下拉列表,而不是列表项。(无需单独回显选择打开和关闭标签)

if ( $post->post_parent ) {

   $children = wp_dropdown_pages( array(
        \'name\'      => \'your-name\' // paste field name here
        \'child_of\'  => $post->post_parent,
        \'post_type\' => \'mycustom\',
        \'echo\' => 0
   ));

} else {

   $children = wp_dropdown_pages( array(
        \'name\'      => \'your-name\' // paste field name here
        \'child_of\'  => $post->ID,
        \'post_type\' => \'mycustom\',
        \'echo\' => 0
   ));

}

if( $children ):
    echo $children;
endif;
希望您已经知道select是一个表单元素,它将post id保留为选项值,因此如果您想将用户重定向到所选页面id,则需要手动解决此问题。(代码未经测试)

wp_dropdown_pages Code Reference