覆盖Wordpress管理功能?

时间:2013-03-11 13:16:12

标签: php wordpress

我想从wp-admin / post.php覆盖get_sample_permalink_html。如果我直接修改文件,我的更改将起作用。但是我想以更干净的方式做到这一点,这意味着在一个插件中,这样它可以面向未来。以下是我在PHP插件文件中尝试过的内容:

add_filter('get_sample_permalink_html', 'custom_get_sample_permalink_html', 1, 3);
function custom_get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
    (...)
}

它会在不显示错误的情况下中断页面,我该怎么办?

1 个答案:

答案 0 :(得分:0)

好吧,该函数有一个可以使用的过滤器,不是“覆盖”该函数,而是操纵它的输出:

$return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug);

所以,你需要以下内容:

add_filter( 'get_sample_permalink_html', 'custom_get_sample_permalink_html', 15, 4 );

function custom_get_sample_permalink_html( $return, $id, $new_title, $new_slug )
{
    // Manipulate the $return as you wish, using your own stuff and the passed variables:
    // $id, $new_title, $new_slug

    return $return;
}

15是优先级,意味着:“在最后可能的位置执行”,如有必要,可以增加它。
4是函数接收的参数数量,在原始apply_filters调用中进行了检查。