用于获取以数字开头的帖子名称的自定义查询

时间:2013-01-28 作者:NatalieMac

我正在为自定义帖子类型实现A-Z索引。我有我的链接打印出来的网页和查询工作的信件。然而,这些数字让我大吃一惊,因为我不想让它们完全一样。我希望第一个链接阅读“0-9”,然后单击它以显示所有以数字开头的帖子。

我认为通配符是答案,但它没有按我预期的方式工作。这是我的函数functions.php:

function test_first_letter( $sql ){
  global $wpdb;
  $first_letter = get_query_var( \'first_letter\' );
  if( $first_letter ){
   if( $first_letter == \'num\') :
     $sql .= $wpdb->prepare( " AND $wpdb->posts.post_name LIKE %s ", \'5%\');
   else:
     $sql .= $wpdb->prepare( " AND $wpdb->posts.post_name LIKE %s ", $first_letter.\'%\' );
   endif;
  }
  return $sql;
}
add_action( \'posts_where\', \'test_first_letter\' );
如果$first_letter query param等于“num”,那么我希望查询查找所有post_names 从数字开始0-9. 但是,这不起作用:

$sql .= $wpdb->prepare( " AND $wpdb->posts.post_name LIKE %s ", \'[0-9]*\');
如何获取所有post\\u名称以任何数字0-9开头的帖子?

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

@RolandoMySQLDBA给出的解决方案将为您提供所有帖子,因为您有* 而不是+. 这个* 表示返回零个或多个匹配项,这不是您想要的。在这种情况下,实际上不需要任何一个字符,只需匹配第一个字符即可。尝试以下操作:

$sql .= $wpdb->prepare( " AND $wpdb->posts.post_name REGEXP \'^[0-9]\'");

结束

相关推荐

Auth.php显示所有用户的个人资料,而不仅仅是作者

我对作者的模板有问题。它工作得很好,可以按预期显示作者配置文件,但问题是,只需在URL(www.mysite.com/author/subscribername)中替换用户名,就可以看到非作者配置文件(贡献者/订阅者,基本上是所有注册用户,包括和管理员)。有没有简单的方法来修复它,只显示“作者”的个人资料,并为其他人返回“未找到页面”?在您的支持之前,谢谢您。Update:我已经申请并将使用的解决方案(除非有人建议如何修改初始查询)。这将返回正确的“未找到页面”页面,包括“未找到页面”页面标题:funct