如何列出一个自定义分类中所有记录,开头只有一个字母,即A

时间:2014-01-12 作者:Azim

我想在一个自定义分类法中列出所有记录,从A或B开始。下面的代码是列出所有字母的所有记录。

下面是列出具有一个自定义分类法的所有记录的代码,其中所有字母都分组。实例enter image description here

<?php 
// Template Name: Store Template


// get all the stores
$stores = get_terms(APP_TAX_STORE, array(\'hide_empty\' => 0, \'child_of\' => 0, \'pad_counts\' => 0, \'app_pad_counts\' => 1));
// get ids of all hidden stores 
$hidden_stores = clpr_hidden_stores();
$list = \'\';
$groups = array();


if ($stores && is_array($stores) ) {

    // unset child stores
    foreach($stores as $key => $value)
    if($value->parent != 0)
          unset($stores[$key]);

    foreach($stores as $store)
        $groups[mb_strtoupper(mb_substr($store->name, 0, 1))][] = $store;

    if (!empty($groups)) :

        foreach($groups as $letter => $stores) {
      $old_list = $list;
      $letter_items = false;
            $list .= "\\n\\t" . \'<h2 class="stores">\' . apply_filters( \'the_title\', $letter ) . \'</h2>\';
            $list .= "\\n\\t" . \'<ul class="stores">\';

            foreach($stores as $store) {
                if (!in_array($store->term_id, $hidden_stores)) {
                    $list .= "\\n\\t\\t" . \'<li><a href="\' . get_term_link($store, APP_TAX_STORE) . \'">\' . apply_filters(\'the_title\', $store->name). \'</a> (\' . intval($store->count) . \')</li>\';
          $letter_items = true;
        }
            }   

            $list .= "\\n\\t" . \'</ul>\';

      if(!$letter_items)
        $list = $old_list;
        }

    endif;

} else {

    $list .= "\\n\\t" . \'<p>\' . __(\'Sorry, but no stores were found.\', \'appthemes\') .\'</p>\';

}
?>

2 个回复
SO网友:Manolo

您可以使用preg_match 功能:

foreach($stores as $store)
    // if $store starts with A or B
    if( preg_match( \'/^(A|B|a|b)/\', $store ) )
        //I\'ve not checked this one
        $groups[mb_strtoupper(mb_substr($store->name, 0, 1))][] = $store;

SO网友:Mestika

一种方法是使用带有通配符搜索的自定义SQL查询,可能看起来像:

SELECT * 
FROM wp_posts
LEFT JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) 
LEFT JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) 
LEFT JOIN wp_term_taxonomy ON ( wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id ) 
LEFT JOIN wp_terms ON ( wp_term_taxonomy.term_id = wp_terms.term_id ) 
WHERE wp_terms.name LIKE  \'a%\'
AND wp_term_taxonomy.taxonomy = \'APP_TAX_STORE\'
AND wp_posts.post_status =  \'publish\'
ORDER BY wp_posts.post_title ASC

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register