douchuo0730
douchuo0730
2018-07-13 02:41

WordPress - 显示标题以某个字母开头的帖子

已采纳

I'm working on a WordPress site, and I'm having trouble querying posts that start with a certain letter.

This is what I am trying to accomplish:

This is what I am trying to accomplish.

Using a simple loop such as:

<?php get_header(); ?>

<h2>Library</h2>

<ul class="library-grid">

<?php
    $args = array(
        'post_type' => 'post'
    );

    $post_query = new WP_Query($args);

    if($post_query->have_posts() ) {
      while($post_query->have_posts() ) {
        $post_query->the_post();
        ?>
        <li class="library-item">
            <img src="<?php the_field('poster') ?>" alt="<?php the_title() ?> poster" class="library-poster">
            <div class="library-item-footer-diagonal"></div>
            <div class="library-item-footer">
                <h3 class="library-title"><a href="<?php the_permalink() ?>"><?php the_title() ?></h3></a></h3>
                <a href="<?php the_permalink() ?>" class="more-info-button">More info</a>
            </div>
        </li>
        <?php
      }
    }
?>
</ul>

<?php
get_footer();

I get all posts:

I get all posts.

How do you think I could edit the loop to get only posts whose title starts with a certain letter?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • duanli9569 duanli9569 3年前

    try

       if($post_query->have_posts() ) {
          while($post_query->have_posts() ) {
            $post_query->the_post();
    
            if(get_the_title()[0] != "a") continue; //so it only shows titles starting with lower case a
            ?>
    

    this is case sensitive, if you want you can strtolower() the_title() and your letter

    if you want to loop throught the alphabet, you can loop through 97 to 122 which is the ascii for the lowercase alphabet and use chr() to convert it to a letter

    点赞 评论 复制链接分享

相关推荐