0

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

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

计划是在 WP admin 中手动将我们的经销商添加为订阅者,让他们以订阅者的身份登录我们的网站,然后他们将能够看到类似的单个帖子,但包含更多信息(经销商定价、批量折扣,服务手册的链接,诸如此类的东西)。

这很容易实现吗?

谢谢!

4

2 回答 2

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(); ?>

PS我从https://github.com/Automattic/_s/blob/master/single.php复制了那个single.php页面

于 2013-06-06T18:14:14.173 回答
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在可能的情况下完成所有这些共同的事情,并且也许调整我​​的示例以仅使用该内置功能添加更多项目。

于 2013-06-06T18:16:15.047 回答