wordpres ショートコードの関数追加でechoは使わない
ログインしていない場合、新規登録やログインボタンを表示するファンクションとショートコードをfunction.phpに追加したのだが、ショートコードを張ったページの最上部に表示されてしまうという罠にハマりました。
echoではなくreturnを使うことで解決
以下はダメな例
/* ログインしていなければ〇〇、ログインしていれば××を返す */
function ファンクション名() {
if (is_user_logged_in()) {
echo'ログインしている表示内容';
}
else{
echo 'ログインしていない表示内容';
}
}
/* ショートコードを追加する */
add_shortcode('ショートコード名', 'ファンクション名');
× echo'ログインしている表示内容';
○ return'ログインしている表示内容';
なんとなくechoを使ってしまっていたのですが、以下のページに書いてあるように
wp_contentのフィルターを通る際に、出力したいコードに置き換わる仕組みらしいので
echoを使ってしまうと、その場で表示されてしまうようです