从子主题向父主题帮助器类函数添加过滤器(_F)

时间:2018-03-16 作者:Çağrı Çolak

我想更改子主题的标题标记,但我不知道如何将过滤器添加到父主题函数。

要更改的父主题函数:

if(! class_exists(\'WpkPageHelper\')) {
class WpkPageHelper
{
    public static function zn_get_subheader( $args = array(), $is_pb_element = false )
    {
        $config = zn_get_pb_template_config();
        self::render_sub_header( $args );
    }

    public static function render_sub_header( $args = array() )
    {
        $defaults = array(
            \'title_tag\' => \'h2\'
        );
    }   
}
}
我希望默认的title\\u标记值为“span”。

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

没有过滤器。要筛选值,开发人员需要通过在调用中包装可筛选值来创建筛选器apply_filters() 具有该筛选器的名称。他们没有这样做。

他们所做的就是WpkPageHelper 类可插拔。这意味着一个子主题可以替换整个类。

在定义之前WpkPageHelper 类,父主题正在检查if(! class_exists(\'WpkPageHelper\')) {. 这是检查类是否已经定义,并且仅在尚未定义时定义类。因为子主题是在父主题之前加载的,所以您有机会定义WpkPageHelper 在父主题之前。然后父主题将使用您的版本。

因此,您只需复制WpkPageHelper 将类转换为子主题的函数。php文件(或子主题的函数文件中包含的其他文件)并进行所需的更改。只需省去class_exists() 检查:

class WpkPageHelper
{
    public static function zn_get_subheader( $args = array(), $is_pb_element = false )
    {
        $config = zn_get_pb_template_config();
        self::render_sub_header( $args );
    }

    public static function render_sub_header( $args = array() )
    {
        $defaults = array(
            \'title_tag\' => \'span\'
        );
    }   
}
这就是WordPress和一些主题和插件在条件语句中封装类和函数定义时所做的。你偶尔会看到这样的情况if ( ! function_exists( \'function_name\' ) ) {. 这是WordPress或主题/插件,让开发人员有机会定义自己版本的这些函数或类,以供WordPress或主题/插件使用,而不是自己使用。

SO网友:Dharmishtha Patel

我没有看到您在代码中实际调用child\\u remove\\u parent\\u function()。

另一个需要注意的问题是时间安排。这是违反直觉的,但功能。php文件按照子文件第一,父文件第二的顺序加载。

总的来说,您需要确保两件事:

代码完全有效

父主题设置完成后,在适当的时候调用

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c