Wordpress:如果订阅者已登录,则为不同的单个帖子模板

时间:2013-06-06 17:53:43

标签: wordpress

如果提出请求的用户恰好是登录用户,我如何“告诉”Wordpress选择不同的单个帖子模板?

这就是我想要做的。 我们公司经销产品。 公众可以查看单个产品(单个帖子)并获取一些信息(公共定价等)。

计划是在WP管理员中手动添加我们的转销商作为订阅者,让他们以我们网站中的订阅者身份登录,然后他们就能看到类似的单个帖子,但有一些更多信息(经销商定价,批量折扣,服务手册链接,类似的东西)。

这很容易实现吗?

谢谢!

2 个答案:

答案 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中执行所有常见操作,并且可能会将我的示例调整为添加更多项目使用该内置函数。