【WordPress-如何为自定义生成的内容调用默认页面模板()】我已经开发了一种拦截器, 用于在匹配用户定义的块时呈现自定义页面。用户可以定义这些页面及其标签, 并将它们存储在表中。
我的问题是:如何为动态内容周围的页面添加默认模板(针对当前主题)?它的行为应与用户进入”
新页面”
并手动输入此内容完全相同。
我的第一步是像这样包含页眉, 侧栏和页脚($ myhtml包含要发出的自定义html内容):
get_header();
print $myhtml;
get_sidebar();
get_footer();
但是, 这样做的结果与使用常规页面模板不一致, 并且对页面主题模板的结构方式做出了一些假设。
是否有另一种方法可以使用提供的内容来呈现默认页面模板?像这样吗此处的基本做法是什么?
render_with_page_temaplte($myhtml)
#1我不知道为什么你要这样做, 而不是仅仅创建标准的WordPress页面。
但是你应该在主题中查找page.php-这将具有用于显示每个页面的结构。用$ myhtml变量替换the_content(), 它应该与你想要的变量接近。
#2+1, 因为我也追求主题独立的自定义页面解决方案-但在你的情况下, 如果你不需要更改< head> 元标记等, 并且可以明确标识用户信息, 则可能没有必要, 如下所示可能是你的解决方案。
仅作为概念, 因为我还需要更改元标记, 这对我来说是没有用的, 因此我尚未进行测试, 并且可能错过了一些阻止其工作的内容:
- 通过页面编辑器创建一个名为” 用户” 的新普通页面, 其唯一内容就是你的简码(请参见下文)。例如[my_user_html]
- 在你的站点功能插件或自定义页面插件的替代品中(如有必要, 请创建一个)并添加以下内容:
function user_rewrite_rules($rules) {
global $wp_rewrite;
//AFTER ACTIVATING THIS PLUGIN YOU NEED TO RE_SAVE PERMALINKS ON DASHBOARD TO LOAD THIS REWRITE RULE
$user_rule = array(
'users/(.+)/?' =>
'index.php?pagename=' . 'users' . '&
usersslug=$matches[1]'
);
return array_merge($user_rule, $rules);
}
add_filter('page_rewrite_rules', 'user_rewrite_rules');
这会将” example.com/users/david” 的请求” 转换” 为” example.com/index.php?pagename=users& usersslug=david” 。注意:” users /” 之后的任何内容现在都将位于” usersslug” 中, 例如” 大卫” 或” 大卫/电影”
我们需要让Wordpress知道查询变量。所以:
function my_query_vars_filter($vars) {
$vars[] = 'usersslug';
return $vars;
}
add_filter( 'query_vars', 'my_query_vars_filter' );
添加你的my_user_html简码功能
function user_insert_in_post($attrs, $content = null) {
$my_params = get_query_var('usersslug');
// then use $my_params to determine html to show etc
}
add_shortcode('my_user_html', 'user_insert_in_post');
- 激活插件, 然后从仪表板保存永久链接(为你的用户重写规则更新它们)
推荐阅读
- WordPress(如何在定制程序中使用活动回调)
- WordPress(如何在小部件中插入主题变量())
- WordPress如何在模板中包括自定义帖子类型的内容()
- WordPress-如何获取下一个新帖子ID
- WordPress(如何获取某个类别的所有帖子中使用的所有标签())
- WordPress,如何更改帖子标题以显示帖子类别()
- WordPress的如何添加主题安装[关闭]
- #yyds干货盘点# 数据结构与算法之时间复杂度与空间复杂度
- CentOS 7.9 安装 Oracle 11gR2