页面顶部显示的简码输出
Shortcode output shown at the top of the page
我知道这个问题与其他已发布的问题类似。我完全遵循了这些问题的答案中的建议,但仍然无法弄清楚为什么输出显示在页面顶部。
function foo_shortcode($atts, $content = null) {
$datashortcode = '<div>'.(function_exists('rtb_kk') ? rtb_kk() : '').'</div>';
return $datashortcode;
}
add_shortcode('showfoo', 'foo_shortcode');
有什么想法吗?
不知道 rtb_kk()
函数是如何工作的,我只能假设它使用 echo
来显示内容,而不是使用 return
。这就是导致该函数的输出出现在页面顶部的原因。
要解决此问题,您可以使用 ob_start()
and ob_get_clean()
:
捕获函数的输出
function foo_shortcode($atts, $content = null) {
if (function_exists('rtb_kk')) {
// Start output buffering
ob_start();
// Run the function
rtb_kk();
// Capture buffer as a string
$output = ob_get_clean();
} else {
// Function doesn't exist so we return an empty string
$output = '';
}
return '<div>' . $output . '</div>';
}
add_shortcode('showfoo', 'foo_shortcode');
替代方法
如果您能够使用 bcn_display()
而不是您正在使用的 rtb_kk()
方法,则无需依赖 ob_get_clean()
.
function foo_shortcode($atts, $content = null) {
if (function_exists('bcn_display')) {
// Return the output as a string so we can control when it's displayed
$output = bcn_display( true );
} else {
// Function doesn't exist so we return an empty string
$output = '';
}
return '<div>' . $output . '</div>';
}
add_shortcode('showfoo', 'foo_shortcode');
这将解决您的问题,只需尝试
<script type="text/javascript">
function foo_shortcode($atts, $content = null) {
if(function_exists('rtb_kk')){
$rtb_kk = rtb_kk();
}else{
$rtb_kk = '';
}
$datashortcode = "<div>$rtb_kk</div>";
return $datashortcode;
}
add_shortcode('showfoo', 'foo_shortcode');
</script>
我知道这个问题与其他已发布的问题类似。我完全遵循了这些问题的答案中的建议,但仍然无法弄清楚为什么输出显示在页面顶部。
function foo_shortcode($atts, $content = null) {
$datashortcode = '<div>'.(function_exists('rtb_kk') ? rtb_kk() : '').'</div>';
return $datashortcode;
}
add_shortcode('showfoo', 'foo_shortcode');
有什么想法吗?
不知道 rtb_kk()
函数是如何工作的,我只能假设它使用 echo
来显示内容,而不是使用 return
。这就是导致该函数的输出出现在页面顶部的原因。
要解决此问题,您可以使用 ob_start()
and ob_get_clean()
:
function foo_shortcode($atts, $content = null) {
if (function_exists('rtb_kk')) {
// Start output buffering
ob_start();
// Run the function
rtb_kk();
// Capture buffer as a string
$output = ob_get_clean();
} else {
// Function doesn't exist so we return an empty string
$output = '';
}
return '<div>' . $output . '</div>';
}
add_shortcode('showfoo', 'foo_shortcode');
替代方法
如果您能够使用 bcn_display()
而不是您正在使用的 rtb_kk()
方法,则无需依赖 ob_get_clean()
.
function foo_shortcode($atts, $content = null) {
if (function_exists('bcn_display')) {
// Return the output as a string so we can control when it's displayed
$output = bcn_display( true );
} else {
// Function doesn't exist so we return an empty string
$output = '';
}
return '<div>' . $output . '</div>';
}
add_shortcode('showfoo', 'foo_shortcode');
这将解决您的问题,只需尝试
<script type="text/javascript">
function foo_shortcode($atts, $content = null) {
if(function_exists('rtb_kk')){
$rtb_kk = rtb_kk();
}else{
$rtb_kk = '';
}
$datashortcode = "<div>$rtb_kk</div>";
return $datashortcode;
}
add_shortcode('showfoo', 'foo_shortcode');
</script>