如何在插件文件夹中使用Get_Sidear?

时间:2014-03-20 作者:Irina

我已经创建了一个插件,它为这个帖子类型添加了自定义帖子类型和自定义分类法。帖子类型和分类的模板位于插件文件夹中。现在,我需要为帖子类型和分类页面添加侧栏。我有以下代码来添加存档页面的模板:

// Filter the archives
add_filter(\'archive_template\', \'mytype_archive_template\'); 
function mytype_archive_template($archive) {
    global $wp_query, $post; 

// Checks for single template by post type
    if (is_post_type_archive(\'type\')) {
        if (file_exists(plugin_dir_path(__FILE__) . \'/archive-mytype.php\'))
            return plugin_dir_path(__FILE__) . \'/archive-mytype.php\';
    }
    return $archive;
}
这很好,所以我尝试对侧边栏使用相同的代码:

function mytype_get_sidebar($mytype_sidebar) {
// load sidebar template
if (file_exists(plugin_dir_path(__FILE__) . \'/sidebar-mytype.php\'))
    return plugin_dir_path(__FILE__) . \'/sidebar-mytype.php\';

// Default return
return $mytype_sidebar;
}
add_filter(\'get_sidebar\', \'mytype_get_sidebar\');
然后在侧边栏所在的页面上:

get_sidebar ( apply_filters( \'mytype_get_sidebar\', \'\' ) );
但它不起作用。var\\u dump返回NULL:

$my = get_sidebar ( apply_filters( \'mytype_get_sidebar\', \'\' ) );
var_dump($my);
有没有办法做到这一点?

提前谢谢。

2 个回复
最合适的回答,由SO网友:Irina 整理而成

我使用load\\u template调用侧栏模板:

load_template ( dirname( __FILE__ ) . \'/sidebar-mytype.php\' ) ;

SO网友:Rarst

get_sidebar 钩住get_sidebar() 是操作,而不是筛选器。它不公开模板(只是侧栏名称),也不允许修改数据。

没有干净的方法重写的内部逻辑get_sidebar(), 你必须以不同的方式来处理它。

结束

相关推荐

Styling the second sidebar

好的,我在我的网站上添加了第二个侧栏,唯一的问题是设置小部件的样式。下面是我在函数中使用的代码。php文件// Widgets plugin: intializes the plugin after the widgets above have passed snuff function wpbx_widgets_init() { if ( !function_exists(\'register_sidebars\') ) { return; } // Fo