Wordpress - 覆盖插件类功能

时间:2016-01-15 10:16:41

标签: php wordpress class object extend

我正在使用一个名为SEO Ultimate的插件,其中有以下类:

class SU_Titles extends SU_Module {
    function init() {
        ......
    }
    function change_title_tag($head) {
        ......
    }
    ......
}

我想覆盖函数change_title_tag并设法使用以下代码覆盖它:

Class SU_Titles_Extended extends SU_Titles
{
    function change_title_tag($head) {

        $title = $this->get_title();
        if (!$title) return $head;
        // Pre-parse the title replacement text to escape the $ ($n backreferences) when followed by a number 0-99 because of preg_replace issue
        $title = preg_replace('/\$(\d)/', '\\\$$1', $title);
        //Replace the old title with the new and return
        $title = do_shortcode($title);
        $title .= "<!--- IF YOU CAN SEE THIS, IT IS WORKING -->";
        return preg_replace('/<title>[^<]*<\/title>/i', '<title>'.$title.'</title>', $head);
    }
}

remove_action( 'after_setup_theme', array( 'SU_Titles', 'change_title_tag' ) );
add_action( 'after_setup_theme', array( 'SU_Titles_Extended', 'change_title_tag' ), 99 );

然而,这会导致致命错误:在不在对象上下文中时使用$ this。 (在我的覆盖函数的第一行引起)。

有没有人有任何想法?

谢谢!

0 个答案:

没有答案