我刚写了一篇自定义帖子(suppliers
) 作为一个插件(带有元内容),效果很好。我还创建了一个模板页(single-suppliers.php
) 在同一个插件中显示数据。我是这样写的,如果有人有这样的愿望,他们可以自己创造single-suppliers.php
页面在他们的模板中,并获得他们自己的外观和感觉。(我正在使用template_include
筛选以执行此操作。)
template\\u include筛选器的示例。
// Register a my Membership Template.
function my_membership_include_template_function( $template_path ) {
if ( get_post_type() == \'my_members\' ) {
if ( is_single() && is_main_query() ) {
// Check if the file exists in the theme first, otherwise
// serve the file from the plugin.
if ( $theme_file = locate_template( array ( \'single-my_members.php\' ) ) ) {
$template_path = $theme_file;
} else {
$template_path = plugin_dir_path( __FILE__ ) . \'/single-my_members.php\';
}
}
}
return $template_path;
}
add_filter( \'template_include\', \'my_membership_include_template_function\', 1 );
示例
single-my_members.php
.
<?php
get_header();
?>
<h1>Test Header - Does not appear within the theme\'s "content" area.</h1>
<?php
get_sidebar();
get_footer();
然而,我面临的问题是,虽然内容在其自身的上下文中看起来很棒,但它并没有位于客户当前主题的正确位置。它位于主题内容开头上方自己的区域。请参见屏幕截图:
在搜索WordPress文档后,我浏览了过滤器,
the_content
, 它通过将内容放在正确的位置来解决上述问题,但是如果我的客户希望这样做,它似乎不允许定制页面(他们已经表示他们这样做了。还有一个问题是
the_content
过滤器显示为附加。)
我不知道如何最好地解决这个问题,或者是否有更好的做法,我应该使用。如果有帮助的话,我正在将Genesis与子主题一起使用,但我特别不想在Genesis挂钩中编码,因为那样会破坏通用插件的用途。