如何通过子主题更改父主题的功能?

时间:2014-03-22 作者:Desi

这是由父主题加载的函数。通过子主题,我想将此函数改为is_single 而不是is_singular. 实现这一目标的正确方法是什么?

add_action(\'wp_head\', \'dt_specific_enqueues\');
function dt_specific_enqueues() {

    if (is_singular()) {
        wp_enqueue_script( \'comment-reply\' );
    }

}

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

父主题的functions.php 将自动加载。您不需要“阅读”它,也不想手动“破解”它,这将被覆盖,也不想通过编程“破解”它,这将占用大量资源。

您的主题正在将脚本排入wp_head 行动您只需要删除该回调并添加一个稍微修改的回调。诀窍在于你的孩子的主题functions.php 在父级之后加载functions.php 所以你需要把握好时机。

function dequeue_dt_specific_enqueues() {
  remove_action(\'wp_head\', \'dt_specific_enqueues\');
}
add_action(\'after_setup_theme\', \'dequeue_dt_specific_enqueues\');
然后添加回您自己的版本:

function altered_dt_specific_enqueues() {
  if (is_single()) {
    wp_enqueue_script( \'comment-reply\' );
  }
}
add_action(\'wp_head\', \'altered_dt_specific_enqueues\');

SO网友:Sudeep K Rana

您可以使用remove_action 在将自己的操作添加到挂钩之前,删除父主题(在子主题内)执行的特定操作[wp_head]) 然后将您自己的操作添加到add_action 在您的孩子主题中。

References:

Remove Action

Add Action

结束

相关推荐

Shotcode error on functions

您好,我有一个生成错误的短代码。有人能帮忙吗?add_shortcode(\'do-action\', \'do_action_shortcode\'); function do_action_shortcode($atts, $content = \'\') {   ob_start();   do_action($content);   $out = ob_get_contents();   ob_end_clean();   return $