使搜索结果显示1个公司或2个公司

时间:2015-03-05 作者:Jornes

我想知道如果我想要这样的东西,是否可以这样做。请看我的密码。

代码如下:

<?php _e(\'Search result for\',\'NCC\'); ?> 
<?php /* Search Count */ 
    $allsearch = &new WP_Query("s=$s&showposts=-1"); 
    $key = wp_specialchars($s, 1); 
    $count = $allsearch->post_count; 
    _e(\'\'); 
    _e(\'"<span>\'); 
    echo $key; 
    _e(\'</span>"\'); 
    _e(\'<span class="resultsFound">( We found \'); echo $count . \' \'; _e(\'companies )</span>\'); 
    wp_reset_query(); 
?>
本规范的结果将是:

( We found 1 companies )
当我们使用wp搜索框时,是否有可能使其工作方式类似于当发现0或1个结果时显示“公司”,当发现2个或更多结果时显示“公司”?

示例:

(1 company found) or (2 companies found)
有什么建议吗?wordpress可以吗?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

$found_posts 保存某个查询找到的帖子数量。您可以使用此逻辑显示链接

示例:

if ( $allsearch->found_posts <= 1 ) {
    //Dispaly company
} else {
    // Disply companies
}
只是语法上的一个注释,应该是0 companies 1 companyx amount of companies 在那之后

EDIT

从我对您的问题所做的编辑来看,我有以下几点:老实说,您的代码有点乱,但没有什么是无法修复的:-)。让我们快速浏览一下

  • showposts 折旧以支持posts_per_page

  • wp_specialchars 自v2以来已折旧。8.0。您应该使用esc_html. 但老实说,我不知道这是否合适。

    您不应该本地化HTML标记,而应该本地化文本。从要本地化的字符串中排除HTML标记并使用占位符

  • wp_reset_query() 应与一起使用query_posts 你永远不应该使用它。您应该使用wp_reset_postdata() 具有WP_Query. 在这种情况下,没有必要这样做,因为您没有设置postdata或更改全局$post 变量

    我不太确定您是否真的需要本地化$key

    如另一个答案中所述,您可以使用_n() 将字符串本地化为单义和复数含义。正如我已经说过的,正确的语法和用法是

    • 0 companies 1 companyx amount of companies

      _e(\'<span class="resultsFound">( We found \'); echo $count . \' \'; _e(\'companies )</span>\'); 
      
      我们可以把它改写成这样

      $text  = \'<span class="resultsFound">\';
      $text .= sprintf( _n( \'We found %d company\', \'We found %d companies\', $count ), $count );
      $text .= \'</span>\'; 
      echo $text;
      
      如果您真的需要显示0 company, 您可以使用

      $text  = \'<span class="resultsFound">\';
      if ( $allsearch->found_posts <= 1 ) {
          $text .= sprintf(__( \'We found %d company\' ), $count );
      } else {
          $text .= sprintf(__( \'We found %d companies\' ), $count );
      }       
      $text .= \'</span>\'; 
      echo $text;
      

      $text  = \'<span class="resultsFound">\';
      if ( $allsearch->post_count <= 1 ) {
          $text .= sprintf(__( \'We found %d company\' ), $count );
      } else {
          $text .= sprintf(__( \'We found %d companies\' ), $count );
      }       
      $text .= \'</span>\'; 
      echo $text;
      

SO网友:tutankhamun

您可以使用_n 函数而不是_e.

阅读以下内容:_n

结束

相关推荐

Cannot see theme in my search

我刚刚在自己的Wordpress上安装了一个新的Wordpress。com Web空间。我想安装\'Hemingway Rewritten\' 主题,但我的Wordpress中的搜索引擎似乎没有列出此主题。相反,搜索“海明威”会返回一个类似主题的旧版本,名为“海明威”Hemingway\'.为什么我看不到主题的更新版本?今天早上我安装了Wordpress作为一个新的安装,所以我看不出为什么我会收到一个过时版本的Wordpress架构(我使用的是4.0)。