除非在特殊情况下,否则不能“重写”整个文件或函数。这就是基本的PHP。
WordPress有适当的代码,可以让您覆盖特定的文件和函数。例如,子主题可以覆盖父主题文件。这是因为WordPress模板加载器的工作方式。只有通过该机制加载文件时,覆盖才会起作用。这些文件将被覆盖。核心文件不是。
WordPress在pluggable.php
包裹在if ( !function_exists(\'some_function_name\') ) :
有条件的如果在加载文件之前使用相同的名称声明函数,则将使用您的函数,而不是默认函数。同样,这些都意味着要被覆盖。
一些钩子允许您替换回调函数。
否则,无法重写文件和函数。你需要找到另一种方法来做你想做的事。可能这涉及到钩子,但您需要通过源代码找到所需的钩子。
特别是对于短代码,可以使用remove_shortcode
, 然后replace them with your own 但您也可以通过使用相同的“标记”注册另一个短代码来破坏/劫持另一个短代码。
概念验证:
function test_sc($atts,$content) {
return \'Howdy\';
}
add_shortcode(\'testsc\',\'test_sc\');
function clobber_test_sc($atts,$content) {
return \'Hi\';
}
add_shortcode(\'testsc\',\'clobber_test_sc\');
然而,
shortcodes.php
实际上不包含短代码。它包含短代码支持函数——API。这些都是不应该被干涉的,我也没有发现任何陷阱。
至于“构建一个数组,并以不同的方式向其他函数发送数据”,我甚至不知道这意味着什么,但我猜你做不到。