【问题标题】:How to sort a list alphabetically using PHP- Wordpress如何使用 PHP-Wordpress 按字母顺序对列表进行排序
【发布时间】:2017-11-02 16:26:57
【问题描述】:

我创建了一个简码,用于在我的 wordpress 多站点中列出并链接我的所有站点。它工作正常,但列表默认按站点 ID 排序。我需要提一下,我的网站 url 由不同的域和我的网络中的路径区分。例如 www.1.com/a、www.1.com/b、www.2.com/c、www.2.com、www.3.com 在技术上都是网络站点。我的简码使用了一个名为 get_sites() 的内置 WordPress 函数。这是它的法典页面:https://developer.wordpress.org/reference/functions/get_sites/

如您所见,ID(默认)、域或路径有一个内置的“orderby”参数。但我不能按网站名称订购。这就是为什么我需要使用 get_blog_details(见下文)来提取站点名称的原因。我最终使用 jquery 来按字母顺序排列列表。这是我打算如何工作的:https://jsfiddle.net/tbalarajan/gbbrsy5k/

$("li").sort(function(a, b) {
var aText = $(a).text(), bText = $(b).text();
return aText < bText ? -1 : aText > bText ? 1 : 0;
}).appendTo('ul');

问题是,jquery 只能工作,因为有一个静态列表可以使用。当在我的 jquery 旁边使用我的简码函数时,我会得到一个所有帖子、个人资料页面、网站 url 等的列表。它按 alpha 排序,但我不想要一个包含 500 多个链接的列表。我相信我只需要使用 PHP 对这个列表进行排序,但我不确定如何。我看了一下 sort() 但那是在处理一个数组,我不确定如何在这种情况下使用它。

这是我用于短代码的函数。在 wysiwyg 中输入 [show_list] 会填充 $html,这是一个包含大约 30 个站点的列表。

function list_sites() {

$subsites = get_sites(); 

if ( ! empty ( $subsites ) ) {

    $html = '<ol class="subsites">'; 

    foreach( $subsites as $subsite ) {

        $subsite_id = $subsite->blog_id; //finds sites by id
        $subsite_name = get_blog_details( $subsite_id )->blogname; //creates variable for site name
        $subsite_link = get_blog_details( $subsite_id )->siteurl; //creates variable for site url
        $html .= '<li><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>'; //builds individual list items

    }

    $html .= '</ol>';

    return $html; //returns the list

}

} add_shortcode('show_list', 'list_sites');

任何关于如何使用 php 按字母顺序排列列表的想法或指针将不胜感激。

【问题讨论】:

    标签: php wordpress shortcode


    【解决方案1】:

    如果我理解正确,您需要按站点名称对链接进行排序。我认为您可以通过利用 PHP 的关联数组功能来做到这一点:

    $sub_site_index = array();
    $subsite_data = array();
    foreach( $subsites as $subsite ) {
    
        $subsite_id = $subsite->blog_id; //finds sites by id
        $subsite_name = get_blog_details( $subsite_id )->blogname; //creates variable for site name
        $subsite_link = get_blog_details( $subsite_id )->siteurl; //creates variable for site url
        //$html .= '<li><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>'; //builds individual list items
        $subsite_data[$site_name] = <li><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>;
        $subsite_index[] = $site_name;
    }
    sort($subsite_index);
    foreach($subsite_index as $item){
        $html .= $subsite_data[$item];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-20
      • 2015-07-26
      • 1970-01-01
      • 2013-05-02
      • 2014-02-08
      • 2015-05-08
      相关资源
      最近更新 更多