在我的插件中,我想更改函数the_content

时间:2013-07-19 15:28:53

标签: php wordpress

我想更改位于/wp-includes/post-template.php中的the_content来自

function the_content($more_link_text = null, $stripteaser = false) {
    $content = get_the_content($more_link_text, $stripteaser);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;
}

进入

function the_content($more_link_text = null, $stripteaser = false) {
    $content = get_the_content($more_link_text, $stripteaser);
    $content = apply_filters('the_content', $content);
    echo $content;
}

如何在我的插件中完成此操作而不触及wordpress代码(让我的代码升级兼容)?我知道可以替换某些功能,但是这个功能呢?

2 个答案:

答案 0 :(得分:0)

Wordpress有一个核心功能列表,可以在主题和插件中覆盖;它们被称为可插拔功能: http://codex.wordpress.org/Pluggable_Functions

the_content()不在该列表中,因此不能直接替换。

如果您不想编辑WordPress代码,则没有简单的方法。唯一的选择是创建函数的本地副本(称为myTheme_the_content()或类似的东西),并确保更改主题中的引用以调用它。

答案 1 :(得分:0)

答案在WordPress代码本身:$content = apply_filters('the_content', $content);。请参阅Actions and filters are NOT the same thing…

您可以挂钩该过滤器并修改内容:

<?php
/* Plugin Name: Modify Content */

add_filter( 'the_content', 'mod_content_so_17749899' );
function mod_content_so_17749899( $content )
{
    // http://codex.wordpress.org/Conditional_Tags
    if( is_admin() ) // Prevent this hook in admin area
        return $content;

    // Manipulate $content
    return $content;
}