两个使用_标题的插件;一个没有传递第二个参数。

时间:2012-03-12 作者:angiemeeker

我使用了两个插件,它们使用了\\u标题,但其中一个(虽然仍然完全正常)在某些页面上显示错误。

中缺少pfund\\U handle\\U title()的参数2。。。wp内容/插件/个人募捐/包括/用户。第639行php

我听说这是因为它没有传递\\u title的第二个必需参数。

这是我的原件?在WP论坛上:http://wordpress.org/support/topic/plugin-personal-fundraiser-missing-argument-2-for-pfund_handle_title-in-userphp-on-line-639?replies=4#post-2682690

第二个插件是Blog-in-Blog。停用后,错误会消失,所以我确信就是那个错误。

我不想将wp config中的调试设置为false,因为我不希望它为false。

以下是Blog-in-Blog插件中引用了\\u标题的一行。

$data[\'post_title\'] = apply_filters(\'the_title\', $post->post_title);
我能做些什么使这项工作在不看到错误的情况下进行吗?

3 个回复
最合适的回答,由SO网友:EAMann 整理而成

我自己的一些插件中有这个问题,这是一个很容易解决的问题。基本上,我将其标记为;懒惰的开发人员;问题这是一个添加过滤器但不考虑可选参数的问题。

步骤1-编辑插件文件

正在中断的代码从第639行开始(根据您的调试信息):

function pfund_handle_title( $atitle, $post_id ) {
    global $post;
    if ( ! pfund_is_pfund_post( ) || $post_id != $post->ID ){
        return $atitle;
    }
    return pfund_get_value( $_REQUEST, \'pfund-camp-title\', $atitle );
}
我们需要做的是稍微更改函数以接受省略的$post_id:

function pfund_handle_title( $atitle, $post_id = null ) {
    global $post;
    if ( null == $post_id || ! pfund_is_pfund_post( ) || $post_id != $post->ID ){
        return $atitle;
    }
    return pfund_get_value( $_REQUEST, \'pfund-camp-title\', $atitle );
}
如果否$post_id ,我们只返回标题。这本质上是一种短路,以防止懒惰的开发人员没有提交所有正确的数据。

步骤2-提交补丁请将此代码发送回原始开发人员,并要求将其纳入未来版本。否则,当他们发布更新时,您将被迫一次又一次地重新修补代码。

SO网友:pembo13

“the\\u title”过滤器的两个参数不是都必需的吗?

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

SO网友:Simon Wheatley

如果插件作者不接受补丁或修复问题,并且您希望使用干净的日志运行,那么您可能还对Zack Tollman的Ostrichisize插件感兴趣。从插件描述中:

“如果您曾经安装过一个插件,或在一个站点上使用过一个抛出大量错误和通知的插件,但没有时间修复该问题,您可以使用此插件关闭这些通知。只需过滤该插件,您就可以添加到不会显示通知的插件列表中。”

http://wordpress.org/extend/plugins/ostrichcize/

结束