如果提出请求的用户恰好是登录用户,我如何“告诉”Wordpress选择不同的单个帖子模板?
这就是我想要做的。 我们公司经销产品。 公众可以查看单个产品(单个帖子)并获取一些信息(公共定价等)。
计划是在WP管理员中手动添加我们的转销商作为订阅者,让他们以我们网站中的订阅者身份登录,然后他们就能看到类似的单个帖子,但有一些更多信息(经销商定价,批量折扣,服务手册链接,类似的东西)。
这很容易实现吗?
谢谢!
答案 0 :(得分:2)
你对PHP感到满意吗?您需要做的是找到模板目录并编辑(或创建)single.php并使用get_template_part
显示正确的single.php模板:
<?php get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php if ( is_user_logged_in() ) :
<?php get_template_part( 'single' ); ?>
<?php else: ?>
<?php get_template_part( 'single', 'guest' ); ?>
<?php endif; ?>
<?php
// If comments are open or we have at least one comment, load up the comment template
if ( comments_open() || '0' != get_comments_number() )
comments_template();
?>
<?php endwhile; // end of the loop. ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
P.S。我从https://github.com/Automattic/_s/blob/master/single.php
复制了single.php页面答案 1 :(得分:1)
我会使用内置的WordPress函数is_user_logged_in()
处理此问题。
从高层次来看,我实际上会在single.php
模板中创建一个代码段,如下所示:
if (is_user_logged_in()) {
include 'single_subscriber.php';
}
else {
include 'single_visitor.php';
}
然后你可以让single.php
干净简单。但是将不同用户的实际模板放在不同的文件中。
当然,如果您有共同的功能或逻辑,最好尽可能在single.php
中执行所有常见操作,并且可能会将我的示例调整为添加更多项目使用该内置函数。