LoginSignup
2
2

More than 5 years have passed since last update.

functions.phpに記述したショートコードを記事内に埋め込むと、記事よりも前に出力される件

Last updated at Posted at 2015-01-18

あらまし

記事内に記述したショートコード[pripara]を仕込むと、
wp_contentが読まれる直前に出力されてしまう問題が発生した。


function shortcode_pripara($atts) {
  echo "サイリウムチェンジ!ぷりっ<br>";
  return;
}
add_shortcode('pripara', 'shortcode_pripara');

2015-02-03追記

特に凝った事をしていなければ、returnで返せばOK。そうすべき。

function shortcode_pripara($atts) {
  return "サイリウムチェンジ!ぷりっ<br>";
}
add_shortcode('pripara', 'shortcode_pripara');

しかし、出力が存在する外部のphpファイルを
(仕方なく)読み込まなくてはならない場合、wp_contentの直前に出力される。


function shortcode_require_pri_ticket($atts) {
  require_once(dirname(__FILE__) . '/ticket/chanko.php');
  return;
}
add_shortcode('require_pri_ticket', 'shortcode_require_pri_ticket');

どうしたか

phpの標準出力のバッファを利用する。


function shortcode_require_pri_ticket($atts) {
  ob_start();

  require_once(dirname(__FILE__) . '/ticket/chanko.php');

  $output_string = ob_get_contents();
  ob_end_clean();
  return $output_string;
}
add_shortcode('require_pri_ticket', 'shortcode_require_pri_ticket');

参考

[resolved] Plugin called via shortcode appears at the wrong place on post
https://wordpress.org/support/topic/plugin-called-via-shortcode-appears-at-the-wrong-place-on-post?replies=5

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2