【问题标题】:sort wordpress posts by title, ignore articles like “the”, “a”, “an”按标题对 wordpress 帖子进行排序,忽略“the”、“a”、“an”之类的文章
【发布时间】:2011-12-22 21:41:08
【问题描述】:

我按标题的字母顺序对帖子进行排序,如下所示:

   <?php
      {
       $posts = get_posts($query_string . 
        '&orderby=title&order=asc&posts_per_page=-1');
      } 
      get_template_part( 'loop', 'category' );
    ?>

我想从排序中排除诸如“the”、“a”和“an”之类的文章。

最好的方法是什么?

谢谢!

【问题讨论】:

    标签: wordpress sorting alphabetical


    【解决方案1】:

    我不知道任何简单的方法可以做到这一点,但你可以做到这一点,

    为此,您需要在帖子中添加custom meta field。将其命名为 mytitle(比如)。

    对于您添加的新帖子,很简单,您必须在添加帖子页面的 mytitle 自定义字段中添加修改后的标题(从标题中删除 a、an、the)。

    对于旧帖子有点棘手,您必须编写一个 php 代码来检索帖子的标题,使用 php preg_replace 从它们中删除 'a','an','the'并使用以下内容将其添加到您的 wordpress 数据库的 postmeta 表中:

    <?php //inside loop   
    $query=INSERT INTO xyz_postmeta (post_id, meta_key, meta_value) VALUES ($postid, 'mytitle' $title);
    $wpdb->query('$query'); ?> 
    

    其中 $postid 是循环内的帖子 ID,$title 是您修改后的标题。

    现在您已经使用自定义 mytitle 字段更新了所有以前的帖子。

    现在要显示,您必须使用自定义循环(不是主题中包含的循环)。

    以下是如何创建一个基本的自定义循环来显示按 mytitle 排序的帖子。

    $querystr = "
       SELECT wposts.*
       FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
       WHERE wposts.ID = wpostmeta.post_id
       AND wpostmeta.meta_key = 'mytitle'
       AND wposts.post_type = 'post'
       AND wposts.post_status = 'publish'
       ORDER BY wpostmeta.meta_value ASC
       ";
    

    现在您可以通过任何方式执行查询。 Wordpres 提供了各种方法来做到这一点。 Here's a link

    例如你可以做这样的事情

    $pageposts = $wpdb->get_results($querystr, OBJECT);
    foreach ( $pageposts as $pagepost ) 
    {
        echo $pagepost->post_title;
        //do other stuff to display content, meta etc..
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多