我只想使用自定义分类法对页面进行回显,但是现在我将所有页面与我自定义帖子类型中的内容一并列出。
<?php
$post_type_object = get_post_type_object('property');
if ($post) {
$parent_properties_dropdown_args = array(
'post_type' => 'property',
'property_status' => 'condominium-villas-project', // <<-- Here is the (property_status - is the custom taxonomy and condominium-villas-project is the custom taxonomy tag)
'selected' => $prop_data->post_parent,
'name' => 'parent_id',
'show_option_none' => __('Not selected'),
'echo' => 0,);
$parent_properties_dropdown = wp_dropdown_pages($parent_properties_dropdown_args);
if (! empty($parent_properties_dropdown)) {
?>
<div class="form-option parent-field-wrapper">
<label for=""></label>
<?php echo $parent_properties_dropdown; ?>
</div>
<?php
} }
但是我还是以自定义帖子类型“属性”获取所有页面。我只需要显示分类的“属性”即可。
示例: 现在-> -属性1-'property_status''rent' -物业2-'property_status''sale' -物业3-'property_status''condominium-villas-project'
我只想得到 -物业3-'property_status''condominium-villas-project'
答案 0 :(得分:0)
您无法使用自定义分类法过滤wp_dropdown_pages()
。您可以使用如下所示的常规WordPress查询。
<?php
$the_query = new WP_Query( array(
'post_type' => 'property',
'tax_query' => array(
array (
'taxonomy' => 'property_status',
'field' => 'slug',
'terms' => 'condominium-villas-project',
)
),
) );
if ( $the_query->have_posts() ) :
?>
<div class="form-option parent-field-wrapper">
<label for=""></label>
<select name='parent_id' id='parent_id'>
<option value="">Not selected</option>
<?php
while ( $the_query->have_posts() ) :
$the_query->the_post();
?>
<option value="<?php the_ID(); ?>"><?php the_title(); ?></option>
<?php endwhile; ?>
</select>
</div>
<?php
endif;
wp_reset_postdata();
?>
答案 1 :(得分:0)
使用我认为是您的准确代码(您对$prop_data
的使用仍然感到困惑),您可以使用以下代码获取(我认为)< / em>您正在寻找。将代码添加到主题的function.php
文件,其所需的.php
文件或您可能实现的插件的.php
文件之一中:
<?php
class wpse_51782342 {
static function on_load() {
add_filter( 'get_pages', [ __CLASS__, '_get_pages' ], 10, 2 );
}
static function _get_pages( $pages, $args ) {
if ( isset( $args[ 'property_status' ] ) ) {
$pages = get_posts(array(
'post_type' => 'property',
'posts_per_page' => -1,
'property_status' => $args[ 'property_status' ],
'include' => wp_list_pluck( $pages, 'ID' ),
));
}
return $pages;
}
}
wpse_51782342::on_load();
'get_pages'
过滤器挂钩在get_pages()
调用的wp_dropdown_pages()
的末尾运行。在该挂钩中,代码将查找您传递的名为'property_status'
的参数,以确定是否应修改行为。 这是一项重要技术,因为它确保相同的参数将始终返回相同的结果,并且不依赖于诸如当前帖子ID或URL之类的内容。遵循此原则通常会减少您必须在项目中修复的错误的数量。
如果找到参数'property_status'
的{{1}}数组,代码将使用其值来调用$args
以返回已被赋值为get_posts()
的帖子列表您传递给property_status
的内容。
最后,代码将wp_dropdown_pages()
的查询限制为get_posts()
所查询的$post->ID
中的$pages
个。这将导致一个下拉列表仅显示您喜欢的页面。
当然,这里是供我参考的wp_dropdown_pages()
中用于测试以上代码的代码,当然,在我输入了属性和属性状态的示例之后。
single.php
希望这有帮助吗?