简码输出始终显示在自定义模板的顶部
Shortcode output always showing at top of custom template
我的简码输出总是出现在我的自定义模板的顶部。
自定义模板
$tag= 'the_content';
remove_all_filters( $tag);
$postid = get_the_ID();
$post = get_post($postid);
$content = do_shortcode($post->post_content);
ob_start();
echo $content;
$result = ob_get_contents();
ob_end_clean();
return $result;
自定义简码
function signupform_shortcode( $atts ) {
extract( shortcode_atts( array(
'socialmkt' => 'aweber'
), $atts ) );
if($socialmkt == 'aweber'){
if($display == 'popup') {
return include_once('modal-aweber.php');
}
}
}
add_shortcode('signupform', 'signupform_shortcode');
它位于 html 着陆中间的简码。
我尝试添加 ob_start() 我在其他帖子中看到的但仍然无法正常工作。
您的短代码回调将输出内容而不是 return 它,这就是您看到它出现在页面顶部的原因。
使用输出缓冲 (ob_start() / ob_get_contents()
) 是解决问题的有效方法,但是您需要移动代码。
输出缓冲应该在您的短代码回调中进行,其中需要 return 值而不是输出。
function signupform_shortcode( $atts ) {
extract( shortcode_atts( array(
'socialmkt' => 'aweber'
), $atts ) );
// Begin output buffering here. Any output below will be stored in a buffer.
ob_start();
if ( $socialmkt == 'aweber' ) {
if ( $display == 'popup' ) {
// Return, as previously used, doesn't help in this context.
include_once( 'modal-aweber.php' );
}
}
// Return (and delete unlike ob_get_contents()) the content of the buffer.
return ob_get_clean();
}
add_shortcode( 'signupform', 'signupform_shortcode' );
我的简码输出总是出现在我的自定义模板的顶部。
自定义模板
$tag= 'the_content';
remove_all_filters( $tag);
$postid = get_the_ID();
$post = get_post($postid);
$content = do_shortcode($post->post_content);
ob_start();
echo $content;
$result = ob_get_contents();
ob_end_clean();
return $result;
自定义简码
function signupform_shortcode( $atts ) {
extract( shortcode_atts( array(
'socialmkt' => 'aweber'
), $atts ) );
if($socialmkt == 'aweber'){
if($display == 'popup') {
return include_once('modal-aweber.php');
}
}
}
add_shortcode('signupform', 'signupform_shortcode');
它位于 html 着陆中间的简码。 我尝试添加 ob_start() 我在其他帖子中看到的但仍然无法正常工作。
您的短代码回调将输出内容而不是 return 它,这就是您看到它出现在页面顶部的原因。
使用输出缓冲 (ob_start() / ob_get_contents()
) 是解决问题的有效方法,但是您需要移动代码。
输出缓冲应该在您的短代码回调中进行,其中需要 return 值而不是输出。
function signupform_shortcode( $atts ) {
extract( shortcode_atts( array(
'socialmkt' => 'aweber'
), $atts ) );
// Begin output buffering here. Any output below will be stored in a buffer.
ob_start();
if ( $socialmkt == 'aweber' ) {
if ( $display == 'popup' ) {
// Return, as previously used, doesn't help in this context.
include_once( 'modal-aweber.php' );
}
}
// Return (and delete unlike ob_get_contents()) the content of the buffer.
return ob_get_clean();
}
add_shortcode( 'signupform', 'signupform_shortcode' );