2

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

为了在前端显示这种帖子类型的内容,我使用了一个 single-clients.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 页面的设置方式。有没有办法手动显示密码功能,以便最终用户访问页面时隐藏内容并显示密码表单?

4

1 回答 1

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

这样,如果页面受密码保护,则只有在输入密码后才会在自定义单一视图中呈现页面。

于 2014-11-13T20:15:37.813 回答