Привет.
Нужно сделать так:
add_shortcode('fbbuttons', 'show_fbbuttons'); // shotcode: [fbbuttons]
function show_fbbuttons() {
ob_start();
require_once(TEMPLATEPATH . '/block-fbbuttons.php');
$fbbuttons = ob_get_clean();
return $fbbuttons;
}
Вероятнее всего, будет работать нормально, даже если не включать буферизацию, то есть:
add_shortcode('fbbuttons', 'show_fbbuttons'); // shotcode: [fbbuttons]
function show_fbbuttons(){
require_once(TEMPLATEPATH . '/block-fbbuttons.php');
return '';
}
Но так делать не принято, шорткод должен возвращать значение, а не выводить.
Ошибка в том, что include и require - это не функции, а управляющие конструкции языка (я бы вообще запретил их вызывать со скобками), и они не работают как функции. Вы результат require присваиваете переменной и его возвращаете - он и выводится.