質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

984閲覧

WordPressのプラグイン開発で、関数の戻り値にget_categoriesの結果を文字列で返したい

yoshida14

総合スコア17

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2018/10/11 16:33

前提・実現したいこと

WordPressのカテゴリリストを表示するプラグインを作ろうとしているのですが、get_categories()で取得した配列を返す良い方法が判りません。

発生している問題・エラーメッセージ

php

1function cate(){ 2 $args = array( 3 'orderby' => 'name' 4 ); 5 6 $categories = get_categories( $args ); 7 foreach ( $categories as $category ) { 8 $cat_link = get_category_link($category->cat_ID); 9 echo '<li class="category-list__item"><a href="' . $cat_link . '">' . $category->name . '</a></li>'; 10 } 11} 12 13add_action( 'wp_head', 'test' ); 14function test(){ 15  $output = "<div>".cate()."</div>"; 16 echo $output; 17}

wp_headのフックを使ってHTMLを表示させ、あとはCSSやJSで場所を調整して、カテゴリリストをスライドインさせているのですが、foreachのechoではdivの中ではなく、一番上に表示されてしまいます。

ですので、cate()の戻り値として配列の中身を文字列として返す方法を教えて頂けないでしょうか?

そもそも、カテゴリリストを横からスライドインさせるという目的を、wp_headにフックする方法で実現させるのは間違っているかもしれません。どうすればいいか調べた上で、この方法にしたのですが、この方法が変でしたら、ご指摘いただけると有り難いです。

(一応カテゴリ以外の表示するエリアは思ったとおりに表示されるのですが、$output = の行にそのほかの要素を付け加えていくとコードがすごく汚くて見にくいです。)

試したこと

get categoriesの他に、wp list categories、get_the_categoryの関数を試しましたが、その記事のカテゴリしか表示されなかったり、その関数内でカテゴリが出力されてしまい、divの中に入らなかったりして実現不可能でした。

補足情報(FW/ツールのバージョンなど)

ヒントになるような情報を頂けると嬉しいです。何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP

1function cate(){ 2 $tmp = ''; 3 $args = array( 4 'orderby' => 'name' 5 ); 6 7 $categories = get_categories( $args ); 8 foreach ( $categories as $category ) { 9 $cat_link = get_category_link($category->cat_ID); 10 $tmp .= '<li class="category-list__item"><a href="' . $cat_link . '">' . $category->name . '</a></li>'; 11 } 12 return $tmp; 13}

投稿2018/10/11 16:44

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshida14

2018/10/11 16:49

思っていた動作を実現でき、大変勉強になりました。迅速に回答頂き本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問