如何在WordPress中查询按字母顺序排列的帖子?

时间:2016-11-28 作者:Asfandyar Khan

你好,我目前正在我的网站上展示所有品牌。品牌是一种自定义的帖子类型。

我现在创建了一个只显示a、B、C、D、E。。。Z、 正如你在截图中看到的那样。我真正想要的是,每当我点击字母A时,它应该只显示标题以A开头的品牌,当我点击M时,它应该只显示标题以B开头的品牌,并隐藏其他品牌。

由于我是wordpress的新手,这是我的第一个项目,有什么办法可以在wordpress中实现这一点吗?

enter image description here

1 个回复
最合适的回答,由SO网友:Dan. 整理而成

假设字母是链接,然后将字母作为参数放入URL中。E、 g.:

http://example.com/brands/?letter=N
然后,在代码中(在此处使用的模板文件中),您需要查询DB中以“N”开头的帖子/品牌。

您可以为letters (https://codex.wordpress.org/Function_Reference/register_taxonomy) 并将每个帖子分配给letter (其中分类法的术语都是字母“”),然后使用以下其中一种:

有几种方法:

1-WP_Query

2-get_posts()

..其他几种方法。

以下是您如何使用WP_Query:

$args = array(
    \'post_type\' = \'brands\', //assuming the post type slug is \'brands\'
    \'posts_per_page\' = -1,
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'letters\',
            \'field\'    => \'slug\',
            \'terms\'    => \'N\', // sanitize_text_field($_GET[\'letter\'])
        ),
    ),
); 

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {

    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        the_title();
    }

    /* Restore original Post Data */
    wp_reset_postdata();
} else {
    echo \'no brands beginning with N;
}
或者,不必为字母创建分类法,您可以这样做(一个更自定义的查询,使用$wpdb):

     global $wpdb; 
     $request = sanitize_text_field($_GET[\'letter\']);
     $results = $wpdb->get_results(
            "
            SELECT * FROM $wpdb->posts
            WHERE post_title LIKE \'$request%\'
            AND post_type = \'brands\'
            AND post_status = \'publish\'; 
            "
     ); 
     if ( $results ) 
     {
        foreach ( $results as $post ) 
        {
            setup_postdata ( $post ); 
            the_title();
        }
     } 
     else 
     {
        echo \'no brands beginning with \'N\';
     }
更多关于$wpdb - https://codex.wordpress.org/Class_Reference/wpdb

更多关于WP_Query - https://codex.wordpress.org/Class_Reference/WP_Query

相关推荐

使用jQuery拆分URL

Can i get the help of you guys as i want i can do it with url我需要拆分URL。并使用最后一个元素作为job\\u id,然后传递;JKDSBD45Jubjkaaassyt“;作为job\\u Id。URL: https://dev/job/?job_id=jkdbsbd45JubJKAAASSYT 需要按以下方式创建此URL。Need: https://dev/job/jkdbsbd45JubJKAAASSYT Thanx i