如果发出请求的用户恰好是已登录的订户,我如何“告诉”Wordpress 选择不同的单个帖子模板?
这就是我想做的。我们公司经销产品。公众可以查看单个产品(单个帖子)并访问一些信息(公共定价等)。
计划是在 WP admin 中手动将我们的经销商添加为订阅者,让他们以订阅者的身份登录我们的网站,然后他们将能够看到类似的单个帖子,但包含更多信息(经销商定价、批量折扣,服务手册的链接,诸如此类的东西)。
这很容易实现吗?
谢谢!
如果发出请求的用户恰好是已登录的订户,我如何“告诉”Wordpress 选择不同的单个帖子模板?
这就是我想做的。我们公司经销产品。公众可以查看单个产品(单个帖子)并访问一些信息(公共定价等)。
计划是在 WP admin 中手动将我们的经销商添加为订阅者,让他们以订阅者的身份登录我们的网站,然后他们将能够看到类似的单个帖子,但包含更多信息(经销商定价、批量折扣,服务手册的链接,诸如此类的东西)。
这很容易实现吗?
谢谢!
你对 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页面
我会使用内置的 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
在可能的情况下完成所有这些共同的事情,并且也许调整我的示例以仅使用该内置功能添加更多项目。