我在编写主题简码时遇到了一些问题。我希望代码显示一个带有 View 计数器功能的 div,然后一个带有 shotcodes 内容的链接作为 url。
view_count();在主题文件中调用时函数工作正常,我实际上设法让它显示,但它显示在 the_content() 之前;帖子(灰色条),当我想要它在元素下的内容中时。
(1) 这是我得到的:
function video_block( $atts, $content = null ) {
return '<div class="video-block"><span class="ViewCount"><?php the_views(); ?></span> <a class="dl-source" href="' . $content . '">Link</a></div>';
}
(2) 这是显示在页面顶部的代码:
function video_block( $atts, $content = null ) { ?>
<div class="video-block"><span class="ViewCount"><?php the_views(); ?></span> <a class="dl-source" href="<?php echo $content; ?>">Link</a></div>
<?php }
(3) 这段代码显示了以上内容的 View ,以及正确位置的链接:
function video_block( $atts, $content = null ) {
$views = the_views();
return '<div class="video-block"><span class="ViewCount"><?php $views; ?></span> <a class="dl-source" href="<?php echo $content; ?>">Link</a></div>';
}
我在 Wordpress 论坛的某个地方读到,您应该在函数中返回(而不是回显)值,但这会破坏它,显示 View 计数,跳过 html 并吐出 $content。
这是指向相关页面的链接:http://nvrt.me/4Qf1 (当前使用 block #2 中的代码)
我的午夜油耗尽了。如果有人能帮助我,我将不胜感激。
编辑:
这是 the_views() 的代码;功能。可以看到回显了,但是改成return的时候根本不显示。
### Function: Display The Post Views
function the_views($display = true, $prefix = '', $postfix = '', $always = false) {
$post_views = intval(post_custom('views'));
$views_options = get_option('views_options');
if ($always || should_views_be_displayed($views_options)) {
$output = $prefix.str_replace('%VIEW_COUNT%', number_format_i18n($post_views), $views_options['template']).$postfix;
if($display) {
echo apply_filters('the_views', $output);
} else {
return apply_filters('the_views', $output);
}
}
elseif (!$display) {
return '';
}
}
最佳答案
尽管在 Wordpress 中推荐使用返回值的函数,并非总是可行,尤其是当您调用另一个写入其输出的函数时直接上流。
当组件将其输出直接写入流时,您需要编写代码以适应该行为,除非您想重写 who 组件(我不会那样做 ;-))。
在这种情况下,the_views() 函数实际上为您提供了两种选择。如果您查看 $display 参数并遵循代码,则此函数可以双向运行。如果 $display 设置为 True(默认),它将回显函数的结果。如果 $display 设置为 False,它将返回输出。
所以你有两个选择,这两个都应该有效:
选项一,返回一个值
请注意,当我调用 the_views() 时,我向它传递了一个错误参数,如下所示:the_views(false)
<?php
function video_block( $atts, $content = null ) {
return "<div class=\"video-block\"><span class=\"ViewCount\">" . the_views(false) . "</span><a class=\"dl-source\" href=\"$content\">Link</a></div>";
}
?>
*选项 2:回显您的输出 *
请注意,当我调用 the_views() 时,没有传递给它的参数。
<?php
function video_block( $atts, $content = null ) {
echo "<div class=\"video-block\"><span class=\"ViewCount\">";
the_views();
echo "</span><a class=\"dl-source\" href=\"$content\">Link</a></div>";
}
?>
哦,还有,不要忘记在返回字符串时转义引号。
关于php - 问题在 Wordpress 的简码内返回一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918691/