如何覆盖WordPress插件显示

时间:2011-09-18 21:46:30

标签: plugins calendar override wordpress-theming

这似乎是一个简单的问题,但事实证明很难找到相关信息。

我正在使用一些输出很糟糕的WordPress插件 - 特别是事件日历1.6.5。此插件包含用于输出事件内容的PHP文件,如 gridview.php list.php single.php 表.PHP 。我熟悉这些文件调用的函数来覆盖插件的工作方式,但我需要更改整个显示格式以适合我的主题。

有没有办法覆盖这些显示文件,还是只创建自己的主题文件并调用插件文件使用的相同功能?

1 个答案:

答案 0 :(得分:2)

我正在寻找类似的答案。我不确定事件日历是如何实现的,但是根据使用Business Directly Plugin做过类似事情的经验,你可以通过从主题的functions.php文件中挂钩你自己的方法来覆盖钩子。

这是一个除了我写的覆盖'wpbdm_show-add-listing-form'的钩子:

/*
 * Fix the horrible output of wpbusdirman_displaypostform() from wpbusdirman.php
 * 
 * This is done by overriding the wpbdm_show-add-listing-form hook with my own function
 */
add_filter('wpbdm_show-add-listing-form', 'alternative_wpbusdirman_displaypostform', 10, 4);

// Ensure that the method signature is the same (same order of vars, same 
function alternative_wpbusdirman_displaypostform($makeactive = 1, $wpbusdirmanerrors = '', $neworedit = 'new', $wpbdmlistingid = '')
{
    // This assumes that the Business Directory Plugin is installed
    if (!function_exists("wpbusdirman_displaypostform"))
    {
        // If the funct doesn't exist then it probably isn't installed
        return '';
    }

    // Call the method and regex parse out the bits we don't want
    $original_output = wpbusdirman_displaypostform($makeactive, $wpbusdirmanerrors, $neworedit, $wpbdmlistingid);

    // Do some fixing of the output. In this example we do nothing and just return what we received.

    return $original_output . " WE EDITED IT!";
}