简体   繁体   English

如何在WordPress发布查询中添加类别过滤器

[英]How to Add Category Filter in WordPress Post Query

I filtered the post's in my sidebar by using this code, 我使用此代码过滤了边栏中的帖子,

$mostlikequerystr = "
SELECT $wpdb->posts.* 
FROM $wpdb->posts, $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
AND $wpdb->postmeta.meta_key = 'most_liked' 
AND $wpdb->posts.post_status = 'publish' 
AND $wpdb->posts.post_type = 'post'
ORDER BY $wpdb->postmeta.meta_value DESC
    LIMIT 0 , 10";

This code working perfect , but now i want to add a category filter too.. 此代码工作完美,但现在我也想添加类别过滤器。

for this i used $term_id 为此,我用了$ term_id

global $wpdb;
$term_id = get_term_by('slug','trailers');
$term_id->term_id;
echo $term_id;//Prints 12 
$mostlikequerystr="SELECT $wpdb->posts.*  FROM $wpdb->posts,$wpdb->postmeta
INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.$wpdb->taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE ($wpdb->term_taxonomy.term_id = $term_id 
AND $wpdb->posts.ID = $wpdb->postmeta.post_id 
AND $wpdb->postmeta.meta_key = 'most_liked'
AND $wpdb->term_taxonomy.taxonomy = 'categories'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish')
        LIMIT 0 , 10";

        $tariler_post = $wpdb->get_results($mostlikequerystr, 'OBJECT');
         echo $wpdb->show_errors();

but its not working for me and no error too ... 但它对我不起作用,也没有错误...

You are missing with conditional operator in your WHERE clause 您在WHERE子句中缺少条件运算符

WHERE ($wpdb->term_taxonomy.term_id = $term_id here
                                               ^^^^^
    $wpdb->posts.ID = $wpdb->postmeta.post_id 

Try this one by adding AND 通过添加AND尝试这一操作

$mostlikequerystr = "
SELECT $wpdb->posts.*  FROM $wpdb->posts,$wpdb->postmeta
INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.$wpdb->taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE ($wpdb->term_taxonomy.term_id = $term_id 
AND $wpdb->posts.ID = $wpdb->postmeta.post_id 
AND $wpdb->postmeta.meta_key = 'most_liked'
AND $wpdb->term_taxonomy.taxonomy = 'categories'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
ORDER BY $wpdb->postmeta.meta_value DESC
)
        LIMIT 0 , 10";

If you are using WPDB class try to catch the errors 如果您使用的是WPDB类,请尝试捕获错误

<?php $wpdb->show_errors(); ?> 

Other way you can use WP's built in functions 您可以通过其他方式使用WP的内置功能

$args = array(
'posts_per_page' => 10,
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => array(
 array(
        'key' => 'most_liked',
        'value' => '',
        'compare' => '!='
    ),
'category__in' => 'id here or skip this argument'
'orderby' => 'meta_value_num',
);
$tariler_post=new WP_Query($args);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何为WordPress单篇文章添加类别图标 - How to add icons for Category for WordPress Single Post 如何在Wordpress的自定义元框中添加帖子类别 - How to add Post Category In Custom Metaboxes of wordpress 如何在WordPress单个帖子中添加类别(帖子) - How to add category(posts) in wordpress single post 如何获取在Wordpress中按类别过滤的自定义帖子类型的永久链接? - How to get permalink of custom post type that filter by category in Wordpress? WordPress:如何使用$ wp_query按类别过滤帖子? - WordPress: How to filter posts by category using $wp_query? 如何通过ID从Wordpress查询中的自定义帖子类型中获取类别 - How to get category by ID from a custom post type in a Wordpress query WordPress | 发布查询| 查询帖子类别以创建子类别过滤器并将其应用于我的功能文件中的Ajax过滤器 - WordPress | Post Query | Query on post categories to create sub-category filter and applying it to an Ajax filter in my function file 如何从wordpress中的category.php查询中排除id的帖子 - How to exclude a post by id from the category.php query in wordpress Wordpress Walker —如何在类别菜单项中添加帖子数? - Wordpress Walker — how to add number of post to category menu items? 如何通过PHP代码在Wordpress中为帖子添加类别? - How to add a category to a post in Wordpress via PHP code?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM