【问题标题】:Wordpress function returns white screen in pluginWordpress 函数在插件中返回白屏
【发布时间】:2010-06-27 17:42:12
【问题描述】:

我在编写 Wordpress 插件方面是全新的,所以首先我尝试创建一个只修改字符串的简单插件。我不久前编写了脚本,并且知道它可以正常工作。但是要将其用于 Wordpress,我想将其应用于帖子标题。当我用函数“get_the_title()”替换字符串时,它返回一个白屏。我将其简化为:

function display_title() {
echo get_the_title();
}

add_action('the_title', 'display_title');

这仍然会返回一个白屏。所以我认为它一定是“get_the_title()”函数。谁能向我解释为什么这不起作用,也许是另一种检索标题字符串的方法?

【问题讨论】:

  • 您的错误报告是否开启?你应该从 PHP 中得到一个有意义的错误信息。

标签: php function wordpress


【解决方案1】:

正如 John 所说,the_title 是一个过滤器,而不是一个动作挂钩,尽管您的函数 会被调用,无论您是使用 add_filter 还是 add_action 注册它。

您的问题是,使用过滤器,您的函数应该返回一个值(通常是传递参数的修改版本)。因此,要使用此过滤器修改标题,您应该执行以下操作:

function display_title($title) {
    $title .= '!'; // Do something with the title string here
    return $title;
}

add_filter('the_title', 'display_title');

【讨论】:

  • 谢谢您,这非常有效。我不知道我可以使用一个名为 $title 的变量,它会检索每个字符串。法典中的某处是否有这些清单?
  • 该函数不检索标题字符串,而是将其作为参数传递。基本上,当您在 Wordpress 循环中调用 the_title() 时,会从数据库中检索标题,并通过与 the_title 过滤器挂钩的所有函数,然后打印出来。不幸的是,大多数过滤器都没有记录在 codex 中,所以找出你的函数将传递哪些参数的最佳方法是在 Wordpress 源代码中搜索apply_filters('filter_name',后面的参数将传递给你的函数。跨度>
  • 如果你查看wp-includes/default-filters.phpthe_title 的大部分过滤器应该都在那里。
【解决方案2】:

嗯,首先,'the_title' 不是一个动作,它是一个过滤器。所以这个函数永远不会触发。所以这不是那个功能的错,它可能是别的东西。我建议阅读插件 api 并了解操作和过滤器之间的区别。过滤器专门设计用于以简单的方式满足您的需求:

http://codex.wordpress.org/Plugin_API/

【讨论】:

  • 谢谢,我现在看到了不同之处。但是,如果我只是输入一个字符串而不是“get_the_title()”函数,那么它似乎可以正常工作。它加载页面并用该字符串替换标题。
猜你喜欢
  • 1970-01-01
  • 2015-09-06
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2013-03-11
相关资源
最近更新 更多