个性化阅读
专注于IT技术分析

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>元标记等, 并且可以明确标识用户信息, 则可能没有必要, 如下所示可能是你的解决方案。

仅作为概念, 因为我还需要更改元标记, 这对我来说是没有用的, 因此我尚未进行测试, 并且可能错过了一些阻止其工作的内容:

  1. 通过页面编辑器创建一个名为”用户”的新普通页面, 其唯一内容就是你的简码(请参见下文)。例如[my_user_html]
  2. 在你的站点功能插件或自定义页面插件的替代品中(如有必要, 请创建一个)并添加以下内容:

创建页面重写规则:

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');
  1. 激活插件, 然后从仪表板保存永久链接(为你的用户重写规则更新它们)
赞(0)
未经允许不得转载:srcmini » WordPress-如何为自定义生成的内容调用默认页面模板?

评论 抢沙发

评论前必须登录!