Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP-Wordpress按字母顺序对列表排序_Php_Wordpress_Shortcode - Fatal编程技术网

如何使用PHP-Wordpress按字母顺序对列表排序

如何使用PHP-Wordpress按字母顺序对列表排序,php,wordpress,shortcode,Php,Wordpress,Shortcode,我已经创建了一个快捷码,列出并链接了wordpress多站点中的所有站点。它可以正常工作,但默认情况下列表是按站点ID排序的。我需要指出的是,我的网站URL是由不同的域和网络中的路径区分的。例如,www.1.com/a、www.1.com/b、www.2.com/c、www.2.com、www.3.com在技术上都是网络站点。我的短代码使用一个名为get_sites()的内置WordPress函数。这是上面的法典页: 如您所见,ID(默认)、域或路径有一个内置的“orderby”参数。但我不能按

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

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

$(“li”).sort(函数(a,b){
var aText=$(a.text(),bText=$(b.text();
返回aTextb文本1:0;
}).附录(“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

}
功能列表\u站点(){
$subsites=获取站点();
如果(!空($subsites)){
$html='';
foreach($subsites作为$subsite){
$subsite\u id=$subsite->blog\u id;//按id查找站点
$subsite\u name=get\u blog\u details($subsite\u id)->blogname;//为站点名称创建变量
$subsite\u link=get\u blog\u details($subsite\u id)->siteurl;//为站点url创建变量
$html.='
  • ';//生成单个列表项 } $html.=''; return$html;//返回列表 }
    }添加_短代码(“显示_列表”、“列出_站点”)


    如果您有任何关于如何使用php按字母顺序排列列表的想法或建议,我们将不胜感激。

    如果我理解正确,您需要按站点名称对链接进行排序。我认为您可以通过利用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];
    }
    
    $sub_site_index=array();
    $subsite_data=array();
    foreach($subsites作为$subsite){
    $subsite\u id=$subsite->blog\u id;//按id查找站点
    $subsite\u name=get\u blog\u details($subsite\u id)->blogname;//为站点名称创建变量
    $subsite\u link=get\u blog\u details($subsite\u id)->siteurl;//为站点url创建变量
    //$html.='
  • ';//生成单个列表项 $subsite_data[$site_name]=
  • ; $subsite\u index[]=$site\u name; } 排序(子网站索引); foreach($subsite_索引为$item){ $html.=$subsite_数据[$item]; }
  • 如果我理解正确,您需要按站点名称对链接进行排序。我认为您可以通过利用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];
    }
    
    $sub_site_index=array();
    $subsite_data=array();
    foreach($subsites作为$subsite){
    $subsite\u id=$subsite->blog\u id;//按id查找站点
    $subsite\u name=get\u blog\u details($subsite\u id)->blogname;//为站点名称创建变量
    $subsite\u link=get\u blog\u details($subsite\u id)->siteurl;//为站点url创建变量
    //$html.='
  • ';//生成单个列表项 $subsite_data[$site_name]=
  • ; $subsite\u index[]=$site\u name; } 排序(子网站索引); foreach($subsite_索引为$item){ $html.=$subsite_数据[$item]; }