单帖全屏模板不继承WordPress角色权限

时间:2015-01-27 作者:Charles Wayne

除了在我的网站上正常的单帖子视图外,我还添加了一个全屏版本的帖子,其中包含了全新的风格。在这个全屏选项中,除了帖子的\\u content()之外,所有内容都将被删除。

为此,我做了一个功能性的非标准php模板,名为prompter。php和我把它放在我网站的根目录中。

在每一篇文章中,都有一个名为“提示器视图”的按钮,该按钮将在“提示器模式”(全屏模式)下触发当前文章的视图

在我对帖子应用基于角色的权限之前,一切都正常。

事实证明,我的全屏模式不受wordpress设置的角色权限的保护。

我的问题是,如何使自定义帖子模板继承普通帖子模板上的权限集?

下面是我想说的例子。

使用普通模板的单个帖子(不受保护)

http://prompter.rareapps.org/?p=123

使用全屏模式的单立柱(不受保护)

http://prompter.rareapps.org/prompter.php?p=123

使用普通模板的单个帖子(受保护)

http://prompter.rareapps.org/?p=2193

使用全屏模式的单贴(仍不受保护)

http://prompter.rareapps.org/prompter.php?p=2193

事实证明,即使对帖子2193施加了限制,如果用户直接进入全屏模板并提供帖子ID,帖子仍然可以在没有权限检查的情况下查看。

如何使我的全屏模板也受WordPress权限设置的保护?

谢谢

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

以下内容不通过索引绕过wordpress。php:

http://prompter.rareapps.org/prompter.php?p=2193
我建议你不要那样做,而是放置提示器。php,然后在有人单击链接以使用template\\u redirect filter全屏查看时劫持页面以显示:

function my_special_display_view( $template ) {
    if ( is_page() && isset($_REQUEST[\'special_view\']) ) {
        global $post;
        $post_id = $post->ID;
        $new_template = locate_template( array(\'prompter.php\') );
        if ( !empty( $new_template ) ) {
            $template = $new_template;
        }
    }
    return $template;
}
add_filter( \'template_include\', \'my_special_display_view\', 99 );
这假设了两件事:

指向特殊视图的链接如下所示http://.../?p=2193&special_view=1$template = $new_template;

add_action(\'wp_enqueue_scripts\', \'do_change_styles_significantly\', 11);
以及与之配套的功能:

function do_change_styles_significantly() {
    wp_dequeue_style( HOOK_FOR_YOUR_THEMES_STYLESHEET );
    wp_register_style( \'special_shiny\', full_url_to_alternate_styles, array(), \'1.0.0\', \'all\');
}
有点复杂,但它将在wordpress中完成,并提供您所需的内容。

结束