简码-按字母顺序将属性的所有术语显示在有序列表中

d1ch0t0my

我创建了一个简单的短代码来输出属性术语并链接到它们各自的档案。我希望能够按字母拆分结果,以便它们输出如下:

A
Adidas
Askwith

B
Bonham
Burberry

...在HTML中看起来像这样:

<span id="a">A</span>
<ul class="brandlist">
<li><a href="/brand/adidas">Adidas</a></li>
<li><a href="/brand/askwith">Askwith</a></li>
</ul>

<span id="b">B</span>
<ul class="brandlist">
<li><a href="/brand/bonham">Bonham</a></li>
<li><a href="/brand/burberry">Burberry</a></li>
</ul>

但是我对如何做到这一点有点茫然。我读过几篇文章,建议为这些字母创建一个新的自定义分类法,但这似乎离完成我希望可以以更简单的方式解决的事情还有很长的路要走。

这是我到目前为止创建的简码:

function brands_output( $atts ){

    ob_start();
    echo '<ul class="brandlist">';

    $terms = get_terms( array(
        'taxonomy' => 'pa_brand',
        'orderby' => 'name',
        'hide_empty' => false,
        )
    );

    foreach ( $terms as $term ) {
    $brand = $term->name;
    $slug = $term->slug;

    echo '<li><a href="/brand/'.$slug.'/">'.$brand.'</a></li>';
    }

    echo '</ul>';
    $output = ob_get_clean();
    return $output;

}
add_shortcode( 'showbrands', 'brands_output' );

我如何做到这一点?

谢谢

LoicTheAztec

这是您功能齐全的简码。我已经用一组不同的术语对其进行了测试,并且它可以完美运行(因此,我希望您的设置是正确的并且也可以运行)。

首先,我准备一个二维数组中的数据,其中级别1的字母字母和级别2的相应术语对名称/子词对。

在我对这个二维数组进行迭代以制作您想要的显示之后……

这是代码:

if (!function_exists('showbrands')) {
    
    function showbrands(){
    
        $term_arr = array();
    
        $terms = get_terms( array(
            'taxonomy' => 'pa_brand',
            'orderby' => 'name',
            'hide_empty' => false,
        ) );
    
        foreach ( $terms as $term ) {
            $brand = $term->name;
            $slug = $term->slug;
    
            // Getting the first letter of $brand term name
            $letter = substr($brand, 0, 1);
            
            // PREPARING DATA IN A BI DIMENSIONAL ARRAY
    
            // Inserting the $letter in an array just once (array level 1)
            // Inserting for each letter all the corresponding pairs "$brand => $slug" (array level 2)
            if(!array_key_exists($letter, $term_arr))
                $term_arr[$letter] = array($slug => $brand);
            else
                $term_arr[$letter][$slug] = $brand;
        }
    
        $output = '<div class="brandlist-container">';
    
        // ITERATING IN THE BI DIMENTIONAL $TERM_ARR ARRAY 
        
        // first level the letters
        foreach( $term_arr as $key_letter => $terms_in_letter ){
            $output .= '<span id="'. strtolower( $key_letter ) .'">'. $key_letter .'</span>
                  <ul class="brandlist">';
    
            // second level the $brand / $slug pairs
            foreach( $terms_in_letter as $key => $value ){
                $output .= '<li><a href="/brand/'.$key.'/">'.$value.'</a></li>';
            }
            $output .= '</ul>';
        }
        $output .= '</div>';
        
        return $output;
    }
    
    add_shortcode( 'showbrands', 'showbrands' );
    
}

此代码位于您的活动子主题(或主题)的function.php文件上或任何插件文件中。

此代码已经过测试并且可以工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

添加简码属性

来自分类Dev

标记列表的Wordpress简码

来自分类Dev

WordPress中的简码问题

来自分类Dev

执行摘录中的简码

来自分类Dev

在WordPress中关闭简码

来自分类Dev

WordPress中的简码问题

来自分类Dev

简码中的javascript数组

来自分类Dev

简码显示在wordpress页面顶部

来自分类Dev

将简码转换为链接

来自分类Dev

将简码转换为链接

来自分类Dev

在Wordpress简码中添加链接

来自分类Dev

在Wordpress中嵌套简码(简单)

来自分类Dev

在Wordpress中嵌套简码(简单)

来自分类Dev

在我的div中添加简码

来自分类Dev

在我的joomla中添加简码

来自分类Dev

如何创建简码以显示每个类别中的所有帖子

来自分类Dev

PHP:带有图像的Wordpress简码

来自分类Dev

带有css悬停的Wordpress简码问题

来自分类Dev

带有字幕简码替换的wordpress图像

来自分类Dev

在WooCommerce单个产品中显示产品属性列表的简码

来自分类Dev

使用简码显示所有帖子图片库[图库]

来自分类Dev

WordPress简码-按ID获取帖子数据

来自分类Dev

WordPress简码-按ID获取帖子数据

来自分类Dev

jQuery替换字符串属性简码

来自分类Dev

从WordPress中提取属性,例如简码

来自分类Dev

查询数据库的简码属性

来自分类Dev

WordPress的枝条模板简码不显示

来自分类Dev

WordPress插件简码始终显示在顶部

来自分类Dev

WP简码以显示发布日期和类别