如何覆盖Shortcodes.php核心文件?

时间:2013-05-22 作者:Grávuj Miklós Henrich

我想覆盖/更新核心短代码。php文件。构建一个数组并向其他函数发送不同的数据,但我的问题是如何在不编辑核心文件的情况下做到这一点?是否有覆盖核心文件和/或函数的最佳做法?

2 个回复
SO网友:s_ha_dum

除非在特殊情况下,否则不能“重写”整个文件或函数。这就是基本的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。这些都是不应该被干涉的,我也没有发现任何陷阱。

至于“构建一个数组,并以不同的方式向其他函数发送数据”,我甚至不知道这意味着什么,但我猜你做不到。

SO网友:Ravinder Kumar

Hooks 是重写核心文件的一种方法

写你自己的Shortcode 并删除默认值。

shortcodes.php 是一组简单的函数,用于创建用于帖子/页面内容的宏代码。像[画廊]

结束

相关推荐

Google Map在Tab Plugins的第二个选项卡上无法使用

我正在使用postTabs plugin 和Comprehensive Google Map Plugin, 我的问题是,当我在第二个选项卡上有我的谷歌地图时,地图没有按预期加载。但是如果我把它移到第一个标签上,效果会非常好。。有没有办法让地图在第二个选项卡上工作?实际上,无论我使用哪个选项卡插件,地图都不会正确加载到第二个选项卡上。。欢迎提出任何建议。谢谢:)