我创建了一个自定义的后期类型“客户端”,其中管理员用户可以创建新客户端,添加图片和详细信息以发布,然后密码保护页面,以便只有特定客户端才能访问内容。
为了在前端显示此post-type的内容,我使用的是single-client.php模板。它完美地显示内容,但密码保护功能不显示表单并隐藏内容,即使我在不同的浏览器中,缓存清除/退出Wordpress(将其视为常规最终用户)。
我可能在这里做错了什么?
<?php get_header(); ?>
<div class="container-client">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
Display all fields and content for post-type
<?php endif; ?>
<?php endwhile; else: ?>
<div class="alert-box error">Sorry, this page no longer exists :( — <a href="<?php bloginfo('url'); ?>/">Back to home</a></div>
<?php endif; ?>
</div>
<?php get_footer(); ?>
这大致是我的single-clients.php页面的设置方式。有没有办法手动显示密码功能,以便在最终用户访问页面时隐藏内容并显示密码表单?
答案 0 :(得分:1)
我确实遇到了这个问题,经过一些尝试和阅读代码后,我想出了这个解决方案:
<?php
add_filter('single_template', function($single_template) {
global $post;
if ($post -> post_type == 'your-custom-post-type') {
if (!post_password_required()) {
$single_template = 'path-to-your/single-your-custom-post-type.php';
}
}
return $single_template;
});
?>
这样,只有在密码保护的情况下,页面才会在输入密码后在自定义sinlge视图中呈现。