2017-10-31 13 views
1

私はマルチサイトのワードプレスネットワーク内のすべての自分のサイトのリストを作成するショートコードを作ろうとしています。私は、ページの本文に[list_sites]を使用し、私はすべての自分のサイトのリストを取得します。get_sites()を使用して、wordpressでショートコードを作成しようとしています

私はバージョン4.8.3ですので、get_sitesを使用しています。

この機能を親テーマのfunctions.phpファイルに追加すると、500の内部エラーが発生します。

私はこのコードを追加するコードスニペットと呼ばれるプラグインを使用してみましたが、私は手掛かりを与え、このエラーが出る

スニペットは、ライン11上のエラーが原因で無効になっている

: 構文エラー、予期しません " ['

私がオンラインで見たすべてのコード例は同じ構文を使用しているようですので、間違っていることがわかりません。あなたは間違って別の物事のカップルをやっている

function make_list_shortcode() { 

$subsites = get_sites(); 

if (! empty ($subsites)) { 

    echo '<ul class="subsites">'; 

    foreach($subsites as $subsite) { 

     $subsite_id = get_object_vars($subsite)["blog_id"]; 
     $subsite_name = get_blog_details($subsite_id)->blogname; 
     $subsite_link = get_blog_details($subsite_id)->siteurl; 
     echo '<li class="site-' . $subsite_id . '"><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>'; 

    } 

    echo '</ul>'; 

} 

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

答えて

1

は、ここに私のコードです。ショートコード出力をエコーし​​ないでください。返すべきです。また、オブジェクトのプロパティに正しくアクセスすることもできません。以下のコードを試してください:

function make_list_shortcode() { 

    $subsites = get_sites(); 

    if (! empty ($subsites)) { 

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

     foreach($subsites as $subsite) { 

      $subsite_id = $subsite->blog_id; 
      $subsite_name = get_blog_details($subsite_id)->blogname; 
      $subsite_link = get_blog_details($subsite_id)->siteurl; 
      $html .= '<li class="site-' . $subsite_id . '"><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>'; 

     } 

     $html .= '</ul>'; 
     return $html; 

    } 

} 
add_shortcode('list_sites', 'make_list_shortcode'); 
+0

ありがとうSpartacus、それは今すぐ完璧に動作します。リストをアルファベット順に並べる方法は?私はsort($ subsite_name)を考えていましたが、配列ではなくプロパティであるため動作しないと思います。 – kingsman

+0

https://developer.wordpress.org/reference/functions/get_sites/を読んでください。ソート順の引数を渡すことができます – Spartacus

関連する問題