0

嗨,我知道这可能很明显,但我只是想知道如何使用我自己的函数,我将在 functions.php 中创建而不是默认函数。

为了解释我做了什么,我进入了 wp-includes/general-templates.php 并更改了很多位于get_calendar.

但是在在线阅读更多内容后,我意识到一旦用户更新到新的 wordpress,我不应该这样做,这些行可能会被覆盖。

我保留了原始 general-templates.php 文件的副本。所以我想知道如何实现我的新更新函数而不是 general-templates.php 中的函数?

谢谢

4

1 回答 1

4

WordPress 提供了两种不同的方法来覆盖默认函数输出:可插入函数过滤器

可插拔功能

一个可插入的函数(所有这些都存在于 中pluggable.php),采用以下形式:

if ( ! function_exists( 'some_function' ) ) {
    function some_function() {
        // function code goes here
    }
}

要覆盖可插入功能,只需在您自己的插件中定义它(或在您的主题functions.php文件中,如果适用):

function some_function() {
    // Your custom code goes here
}

过滤器

过滤器采用以下形式:

function some_function() {
    // function code goes here
    return apply_filters( 'some_function', $output );
}

要覆盖过滤器,请定义一个回调并将其添加到过滤器:

function mytheme_filter_some_function( $output ) {
    // Define your custom output here
    return $output;
}
add_filter( 'some_function', 'mytheme_filter_some_function' );

专门针对get_calendar()

如果您查看 source,您会看到 for 的输出get_calendar()通过了get_calendar过滤器:

return apply_filters( 'get_calendar',  $calendar_output );

因此,您只需编写自己的回调来修改$calendar_output,并将其挂钩到get_calendar.

function mytheme_filter_get_calendar( $calendar_output ) {
    // Define your custom calendar output here
    $calendar_output = '';
    // Now return it
    return $calendar_output;
}
add_filter( 'get_calendar', 'mytheme_filter_get_calendar' );
于 2012-11-26T17:09:05.193 回答