【问题标题】:Custom WordPress Shortcode, can't replace echo with return自定义 WordPress 简码,不能用 return 代替 echo
【发布时间】:2014-06-23 18:19:38
【问题描述】:

此代码直接放入页面内容时效果很好。

<font color=#ff0000> 
<?php global $current_user;
  get_currentuserinfo();

    echo $current_user->display_name . "\n"; 
    echo 'Level: ' . $current_user->level . "\n <br>";

?>
</font>

结果显示“Sam 等级 65”

但是,当我将其转换为简码并尝试将 echo 替换为 return 时,wordpress 会中断,所有屏幕都会变为空白。 这是我尝试过的一个例子:

// Add Shortcode
function custom_shortcode() {

// Code
<font color=#ff0000> 
<?php global $current_user;
  get_currentuserinfo();

  $output = $current_user->display_name . "\n"; 
  $output .= 'Level: ' . $current_user->level . "\n <br>";

return $output;

?>
</font>
}
add_shortcode( 'userlevel', 'custom_shortcode' );

知道我哪里出错了吗?

提前谢谢你!

【问题讨论】:

  • 你检查过你的错误日志吗?有没有线索?
  • 您可以将错误日志添加到您的问题中吗?
  • 错误日志指向最后一行。它说'调用未定义的函数 add_shortcode() 等。我不明白这是怎么回事。

标签: php wordpress return echo shortcode


【解决方案1】:

您在需要 PHP 的地方使用 HTML。这就是你有一个空白屏幕的原因。

以下是我将其移至简码的方法:

function wpse_shortcode_userlevel() {
    global $current_user;
    get_currentuserinfo();

    $output = '<span class="shortcode-user-level">';
    $output .= $current_user->display_name . "\n";
    $output .= "Level: {$current_user->level} \n <br>";
    $output .= '</span>';

    return $output;
}
add_shortcode( 'userlevel', 'wpse_shortcode_userlevel' );

然后在你的样式表中添加:

.shortcode-user-level {
    color: #ff0000;
}

【讨论】:

  • 仍然是空白。错误日志指向最后一行。 add_shortcode() 显然是一个未定义的函数?
  • 请粘贴整个错误日志的最后一行
  • [07-May-2014 00:41:26 UTC] PHP 致命错误:调用 /Users/Sam/Documents/Uni Work/New Mamp Test Site/wp- 中的未定义函数 add_shortcode()第 4464 行包含/functions.php
  • 您将代码添加到完全错误的位置。删除您添加到该文件的所有代码。相反,它应该在您的活动主题文件夹中的 functions.php 中。转到 /wp-content/themes/your-theme/functions.php 并将其添加到那里。切勿修改任何核心文件(如果它位于 wp-admin 或 wp-includes 文件夹中,则不应更改)。
  • 天哪,真是个傻瓜!现在一切正常。内森,非常感谢您的耐心和帮助!
猜你喜欢
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 2012-10-22
相关资源
最近更新 更多