我正在使用bbPress并希望扩展BBP\\U Shortcodes类,以便用我自己的函数替换函数。
以下是我的基本片段,它似乎什么都没做:
class WPTUMBLE_Shortcodes extends BBP_Shortcodes {
/**
* Display an index of all visible root level forums in an output buffer
* and return to ensure that post/page contents are displayed first.
*
* @since bbPress (r3031)
*
* @param array $attr
* @param string $content
* @uses bbp_has_forums()
* @uses get_template_part()
* @return string
*/
public function display_forum_index() {
echo \'Yo Adrian\';
}
}
function wptumble_register_shortcodes() {
global $bbp;
// Bail if bbPress is not loaded
if (is_a($bbp, \'bbPress\')) return;
$bbp->shortcodes = new WPTUMBLE_Shortcodes();
}
add_action( \'bbp_init\', \'wptumble_register_shortcodes\', 25 );
查看bbpress功能设置,它显示:
add_action( \'bbp_init\', \'bbp_register_shortcodes\', 18 );
我错过了什么?
*我已经尝试了每一个优先级,从挂钩到优先级1的init,一直到我在上面发布的地方,但似乎都没有做任何事情。
更奇怪的是:我基本上是将代码粘贴到一个名为xyz的插件文件中,我没有收到任何错误,只是在查看应该输出的内容时什么都没有发生。这意味着我得到的是display_forum_index()的原始输出,而不是我的新输出。
更糟糕的是,我没有简单地创建一个包含该代码的插件,而是将代码放入我的“完整”插件中。
我使用以下方法:
include_once (WPTUMBLE_PLUGIN_DIR.\'twentyeleven-bbpress-child/inc/tumble-core-shortcodes-single.php\');
然后,我将wptrull\\u Shortcodes类粘贴到上面的文件中*试图保持干净,以便在自定义插件中将不同的函数分离到不同的文件中
当我这样做时,会出现一个致命错误,即没有定义BBP\\U短代码。
唯一的区别是,我将代码放入一个名为include\\u的文件中。。
那里到底发生了什么事?
如果它是一个插件文件,要么什么都没有发生,要么如果我包含一次\\u并将代码放在另一个文件中,就会出现致命错误。
现在太困惑了。
最合适的回答,由SO网友:Otto 整理而成
我无法告诉您include等的错误,但您扩展类的方法基本上是正确的。
然而,我看到的最可能的情况是,您的add\\u操作基本上是在错误的位置执行的。此外,您允许原始操作继续而不是替换它,这样做是错误的。
试试这个:
add_action(\'bbp_plugins_loaded\',\'wptumble_actions_modification\');
function wptumble_actions_modification() {
remove_action(\'bbp_init\', \'bbp_register_shortcodes\', 18);
add_action(\'bbp_init\', \'wptumble_register_shortcodes\', 18);
}
这将删除原始操作并将其替换为您自己的操作,并在插件加载挂钩上执行,确保在您的插件和bbPress插件都加载后发生,并且可能bbPress的所有操作挂钩都已就绪,但尚未执行(因为尚未达到init)。