函数描述
显示一个页面下拉表单。
Usage
<?php wp_dropdown_pages( $args ); ?>
默认使用
$args = [
'depth' => 0,
'child_of' => 0,
'selected' => 0,
'echo' => 1,
'name' => 'page_id',
'id' => null, // string
'show_option_none' => null, // string
'show_option_no_change' => null, // string
'option_none_value' => null, // string
];
默认情况下,上面的代码显示:
- 在下拉表单中分级显示页面和子页面
- 显示所有页面(不限制子页面)
- 下拉表单中没有选中任何页面
- 下拉表单的名称为’page_id’
- 如果设置了 (show_option_none=>” ,没有在上面的示例中显示),可以不选择任何页面
- 不排除任何页面 (exclude=>”,没有在上面的示例中显示)
- 不排除任何页面树 ‘tree’ (exclude_tree=>”没有在上面的示例中显示)
parameters
depth (integer) 次参数控制在列表中包含几级页面, 默认为0(显示所有页面,包含子页面)。
- 0 – 默认值,以层级关系显示所有父页面和子页面。
- -1 – 子页面和父页面同事显示,不展现层级关系。Pages in sub-pages displayed in flat (no indent) form.
- 1 – 只显示顶级页面
- 2 – 显示顶级页面和二级页面。
child_of (integer) 只显示某个页面下面的子页面,值为页面ID,默认为0,显示所有页面。 selected (integer) 下拉表单中选中的页面ID,默认没有页面被选中。 echo (boolean) 控制直接显示HTML表单还是在PHP中返回HTML字符串,默认为1,直接显示HTML下拉表单,可用的值有:
- 1 (true) – 默认
- 0 (false)
name (string) 分配给下拉表单的name,默认为 ‘page_id’. id (string) 分配给下拉表单的id,默认为name的值。 show_option_none (string) 在下拉选择表单的顶部创建一个附加的<option>选项,以便不选择任何页面时使用。 option_none_value (string) 参数show_opthon_none的值。 show_option_no_change (string) 因为下拉表单的HTML允许选择一个值为-1的 NO CHANGE 选项。 exclude (string)逗号分隔的需要排除的id列表,如’include=4,12′ 是指id为 4 a和 12 的页面将不被返回或显示,默认不排除任何页面。 exclude_tree (string) 定义被排除的页面和子页面的父级页面ID,使用此选项排除一个父页面和父页面的子页面。也就是说’exclude_tree=5’,可以排除页面ID为5的页面,和页面5的子页面,最早在WordPress2.7中可用。
Other parameters
下面一些参数可能可以使用,不过尚未经过官方确认,一些get_pages函数的参数可以用在iwp_dropdown_pages 函数上,下面是 get_pages 参数的默认设置。
$args = [
'child_of' => 0,
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'hierarchical' => 1,
'exclude' => ,
'include' => ,
'meta_key' => ,
'meta_value' => ,
'authors' => ,
'exclude_tree' => ,
'post_type' => 'page',
];
使用 ‘post_type’ 参数,我们可以获取任何文章类型的下拉表单,包括自定义文章类型,只要文章类型是分级的就可以。
usage example
带提交按钮的下拉表单
显示一个有提交按钮的页面选择下拉表单,下拉表单中表现页面的层次关系。
<li id="pages">
<h2><?php _e('pages:'); ?></h2>
<form action="/en//" method="get" data-trp-original-action="<?php bloginfo('url'); ?>">
<?php wp_dropdown_pages(); ?>
<input type="submit" name="submit" value="view" />
<input type="hidden" name="trp-form-language" value="en"/></form>
</li>