我有一个自定义帖子类型,这个自定义帖子类型中的每个帖子都有许多子帖子。我有一个代码,可以显示子页面中父级的每个子级。(父: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
但在选项中)。
霍普描述得很好。
最合适的回答,由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