我想更改位于/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代码(让我的代码升级兼容)?我知道可以替换某些功能,但是这个功能呢?
答案 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;
}