我制作了一个页面模板, 可以在其中过滤一些帖子。如果你执行正常的WP_Query, 则一切正常。但是, 如果我使用tax_query, 它不会显示任何帖子。
为了注册帖子类型和分类法, 我使用了插件”
cptui”
。
常规WP_Query请求:
$query = new WP_Query(array(
'post_type' =>
$post->
post_name, 'post_status' =>
'publish', 'posts_per_page' =>
6, 'paged' =>
$paged, ));
if(!$_POST) { //If not filtered ... then show all
if($query->
have_posts()): while ($query->
have_posts()) : $query->
the_post();
echo "<
a href='".get_post_permalink()."'>
<
div style='box-shadow: 0 0 15px 0 rgba(0, 0, 0, .05);
padding: 50px;
width: 100%;
margin: 5px;
'>
";
echo "<
h5>
" . $query->
post->
post_title . "<
/h5>
";
echo "<
p>
" . get_field( "plaats" ) . '-' . get_term(get_field('dienstverbanden'))->
name . "<
/p>
";
echo "<
/div>
<
/a>
";
endwhile;
endif;
}
我读了其他文章, 他们说我可以使用php echo $ GLOBALS [‘ query’ ]-> request; 看看什么是mysql查询。
我的查询是:SELECT SQL_CALC_FOUND_ROWS wp_posts.ID from wp_posts WHERE 1 = 1 AND wp_posts.post_type =’ vacature’ AND(((wp_posts.post_status =’ publish’ ))ORDER BY wp_posts.post_date DESC LIMIT 6, 6
现在是带有tax_query的请求。 tax_query WP_Query请求:
$query = new WP_Query(array(
'post_type' =>
$post->
post_name, 'post_status' =>
'publish', 'posts_per_page' =>
6, 'paged' =>
$paged, 'tax_query' =>
array(
array(
'taxonomy' =>
'provincie', 'field'=>
'slug', 'terms'=>
'noord-brabant', 'include_children'=>
0
), ), ));
if(!$_POST) { //If not filtered ... then show all
if($query->
have_posts()): while ($query->
have_posts()) : $query->
the_post();
echo "<
a href='".get_post_permalink()."'>
<
div style='box-shadow: 0 0 15px 0 rgba(0, 0, 0, .05);
padding: 50px;
width: 100%;
margin: 5px;
'>
";
echo "<
h5>
" . $query->
post->
post_title . "<
/h5>
";
echo "<
p>
" . get_field( "plaats" ) . '-' . get_term(get_field('dienstverbanden'))->
name . "<
/p>
";
echo "<
/div>
<
/a>
";
endwhile;
endif;
}
我现在得到的查询是:SELECT SQL_CALC_FOUND_ROWS wp_posts.ID from wp_posts LEFT JOIN wp_term_relationships ON(wp_posts.ID = wp_term_relationships.object_id)WHERE 1 = 1 AND(wp_term_relationships.term_taxonomy_id IN)(3) ((wp_posts.post_status =’ publish’ ))GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 6、6, 但我没有发回任何帖子。
你知道对此有什么解决方案吗?
模板的完整代码:
<
div id="page-<
?php the_ID();
?>
" <
?php post_class();
?>
>
<
?php the_content();
?>
<
?php
global $post;
$paged = ( get_query_var('paged')) ? get_query_var('paged') : 1;
$query = new WP_Query(array(
'post_type' =>
$post->
post_name, 'post_status' =>
'publish', 'posts_per_page' =>
6, 'paged' =>
$paged, 'tax_query' =>
array(
array(
'taxonomy' =>
'provincie', 'field' =>
'slug', 'terms' =>
array( 'noord-brabant')
)
)
));
// echo $GLOBALS['query']->
request;
if(!$_POST) { //If not filtered ... then show all
if($query->
have_posts()): while ($query->
have_posts()) : $query->
the_post();
echo "<
a href='".get_post_permalink()."'>
<
div style='box-shadow: 0 0 15px 0 rgba(0, 0, 0, .05);
padding: 50px;
width: 100%;
margin: 5px;
'>
";
echo "<
h5>
" . $query->
post->
post_title . "<
/h5>
";
echo "<
p>
" . get_field( "plaats" ) . '-' . get_term(get_field('dienstverbanden'))->
name . "<
/p>
";
echo "<
/div>
<
/a>
";
endwhile;
endif;
}
else { //now its filtered
$null = true;
if($query->
have_posts()): while ($query->
have_posts()) : $query->
the_post();
$filterconditions = [];
//hier komen alle filtercondities in$keys = array_keys($_POST);
foreach($keys as $key) {
if($_POST[$key] == "on") {
$filter = explode("_", $key);
$field = $filter[0];
$filter = $filter[1];
$taxonomy = get_field( $field );
$term = get_term_by('term_id', $taxonomy, $field);
array_push($filterconditions, '"' . $filter . '"' . '==' . '"' . $term->
name . '"');
}
};
$filterconditions = implode('&
&
', $filterconditions);
// echo $filterconditions;
if(eval("return $filterconditions;
")) {
$null = false;
echo "<
a href='".get_post_permalink()."'>
<
div style='box-shadow: 0 0 15px 0 rgba(0, 0, 0, .05);
padding: 50px;
width: 100%;
margin: 5px;
'>
";
echo "<
h5>
" . $query->
post->
post_title . "<
/h5>
";
echo "<
p>
" . get_field( "plaats" ) . '-' . get_term(get_field('dienstverbanden'))->
name . "<
/p>
";
echo "<
/div>
<
/a>
";
}
endwhile;
endif;
if($null) {
echo "Sorry, er zijn geen vacatures gevonden met deze filters";
}
}$total_pages = $query->
max_num_pages;
if ($total_pages >
1 &
&
!$null) {
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' =>
get_pagenum_link(1) . '%_%', 'format' =>
'/page/%#%', 'current' =>
$current_page, 'total' =>
$total_pages, 'prev_text'=>
__('? prev'), 'next_text'=>
__('next ?'), ));
} wp_reset_query();
?>
<
/div>
#1
$args=array(
'post_type' =>
'your_post_type', 'post_status' =>
'publish', 'orderby' =>
'title', 'order' =>
'DESC', 'posts_per_page' =>
6, 'tax_query' =>
array(
array(
'taxonomy' =>
'provincie', 'field' =>
'slug', 'terms' =>
array( 'noord-brabant')
)
)
);
$result = new WP_Query( $args );
// The Loop
if ( $result->
have_posts() ){
while ( $result->
have_posts() ) {
$result->
the_post();
// this is your loop}} else {
// nothing
}
可以尝试上面的代码
#2你可以使用以下代码获取简单的自定义帖子类型列表:
$args = array(
'post_type' =>
'services', 'post_status' =>
'publish', 'posts_per_page' =>
6, 'orderby’ =>
'title', 'order’ =>
'ASC', );
$loop = new WP_Query( $args );
while ( $loop->
have_posts() ) : $loop->
the_post();
print the_title();
the_excerpt();
endwhile;
wp_reset_postdata();
放置自定义帖子类型名称以检索帖子并根据需要更改while循环
#3【tax_qeury在wordpress中不起作用。怎么解决()】好的, 你可以使用get post方法代替WP Query:
$posts_array = get_posts(
array(
'posts_per_page' =>
6, 'post_type' =>
$post->
post_name, // Get POST TYPE FROM $GLOBAL POST
'tax_query' =>
array(
array(
'taxonomy' =>
'provincie', 'field' =>
'slug', 'terms' =>
'noord-brabant', )
)
)
);
推荐阅读
- 下拉菜单”aria”仅在714px Bootstrap WordPress主题以下起作用
- WP无法识别Tag.php的问题
- 标签页不显示日期(wordpress)
- Hadoop3数据容错技术(纠删码)
- EventLog Analyzer能对网络环境中的那类日志进行采集()
- Linux学习教程Linux中Sed命令如何使用()
- 简单分析实现运维利器---web远程ssh终端录像回放
- Linux操作系统安装及服务控制
- Linux Centos7目录结构总结