php - 问题在 Wordpress 的简码内返回一个函数

标签 php wordpress function shortcode

我在编写主题简码时遇到了一些问题。我希望代码显示一个带有 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/

相关文章:

php - MySQL 终端结果 != PHP->MySQL 结果

php - 删除 WooCommerce 中特定用户角色的添加到购物车按钮

javascript - JS 中的密码强度计有效,但我想考虑独特的字符

php - 循环查询并获得位置数组

PHP htaccess 将查询字符串从大写重定向到小写

php - ECHO 变量包括换行符

html - 固定页眉仅在一页上

wordpress - 如何从我的 Wordpress 插件创建新页面

function - 如何重新执行 Rust 主函数?

r - 不同R函数之间的PCA值不同,有什么解释吗?