Custom posts password protect

时间:2016-03-31 作者:Jason

我的网站高度基于客户,我们希望对特定自定义类型的帖子提供非常强大的密码保护。

我们有一个名为“something”的自定义类型帖子,下面是它的声明:

$args = array (
            \'label\' => \'Something\',
            \'singular_label\' => \'Something\',
            \'public\' => false,
            \'publicly_queryable\' => true,
            \'show_ui\' => true,
            \'capability_type\' => \'post\',
            \'hierarchical\' => false,
            \'rewrite\' => array(\'slug\' => "something"),
            \'query_var\' => false,
            \'menu_icon\' => \'dashicons-chart-area\',
            \'supports\' => array(\'title\')
    );
我想确保slug“something”下的任何内容都有密码保护,如果类型为“something”的帖子设置了密码,那么它会要求用户输入密码。

我在使用这种自定义post类型声明时遇到的一个问题是,即使设置了密码,它也不会要求用户输入密码。

1 个回复
SO网友:Max Yudin

使用post_password_required() 功能检查立柱是否受到保护。

<?php
global $post;

$p = $post; // can be post object.
// $p = $post->ID; // also can be post ID.

$this_post_type = get_post_type( $p );

if ( \'my_custom_post_type\' === $this_post_type ) { // check the post type.

    if ( ! post_password_required( $p ) ) {
        // unprotected post loop here.
    } else {
        // protected post, show the password form.
        echo get_the_password_form( $p );
    }
}
如果对此帖子类型使用自定义模板,则可以跳过帖子类型检查。

然而,上面的代码没有经过测试。