密码保护不适用于自定义帖子类型single-template.php? - Wordpress

时间:2012-12-19 16:51:07

标签: wordpress templates taxonomy custom-post-type

我创建了一个自定义的后期类型“客户端”,其中管理员用户可以创建新客户端,添加图片和详细信息以发布,然后密码保护页面,以便只有特定客户端才能访问内容。

为了在前端显示此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 :( &mdash; <a href="<?php bloginfo('url'); ?>/">Back to home</a></div>

    <?php endif; ?>

  </div>

<?php get_footer(); ?>

这大致是我的single-clients.php页面的设置方式。有没有办法手动显示密码功能,以便在最终用户访问页面时隐藏内容并显示密码表单?

1 个答案:

答案 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视图中呈现。