communityfield’s diary

サイト開発のメモです。メモなので結構適当です

wordpres ショートコードの関数追加でechoは使わない

ログインしていない場合、新規登録やログインボタンを表示するファンクションとショートコードをfunction.phpに追加したのだが、ショートコードを張ったページの最上部に表示されてしまうという罠にハマりました。

echoではなくreturnを使うことで解決

以下はダメな例

/* ログインしていなければ〇〇、ログインしていれば××を返す */
function ファンクション名() {
if (is_user_logged_in()) {
 echo'ログインしている表示内容';
}
else{
echo 'ログインしていない表示内容';
}
}
/* ショートコードを追加する */
add_shortcode('ショートコード名', 'ファンクション');

 

× echo'ログインしている表示内容';

○ return'ログインしている表示内容';

 

なんとなくechoを使ってしまっていたのですが、以下のページに書いてあるように

wp_contentのフィルターを通る際に、出力したいコードに置き換わる仕組みらしいので

echoを使ってしまうと、その場で表示されてしまうようです

wordpres ショートコードの関数にechoは使ってはダメ! « 生きる辞書