WordPress 可以给文章设置密码保护。那么如何判断一篇文章是否是密码保护文章呢?
可以简单的认为 $post->password 不为空,即为密码保护文章。但这样不太严谨,WordPress 的钩子的原因。更好的方法是使用 WordPress 提供的专门的函数:post_password_required 。
函数原型:
post_password_required( int|WP_Post|null $post = null ): bool
确定帖子是否需要密码以及是否提供了正确的密码。
参数说明:
$post,文章ID 或 文章。如果为null,则使用全局 $post 。
函数源码:
function post_password_required( $post = null ) {
$post = get_post( $post );
if ( empty( $post->post_password ) ) {
/** This filter is documented in wp-includes/post-template.php */
return apply_filters( 'post_password_required', false, $post );
}
if ( ! isset( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ) {
/** This filter is documented in wp-includes/post-template.php */
return apply_filters( 'post_password_required', true, $post );
}
require_once ABSPATH . WPINC . '/class-phpass.php';
$hasher = new PasswordHash( 8, true );
$hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
if ( 0 !== strpos( $hash, '$P$B' ) ) {
$required = true;
} else {
$required = ! $hasher->CheckPassword( $post->post_password, $hash );
}
return apply_filters( 'post_password_required', $required, $post );
}
包含钩子:
apply_filters( 'post_password_required', bool $required, WP_Post $post )
使用举例:
$pass_masterPost = get_post();
if ( post_password_required( $pass_masterPost->ID ) )
{
echo get_the_password_form();
echo '<p>THIS POST IS PASSWORD PROTECTED: PLEASE ENTER IT!</p>';
}
else
{
if ( have_posts() )
{
while ( have_posts() )
{
the_post();
the_content();
echo '<hr>';
}
}
else
{
echo '<p>Nothing Found!</p>';
}
}
-
WordPress函数:esc_attr__ 转义属性及翻译WordPress函数:esc_attr__ 转义属性及翻译
-
WordPress函数:esc_attr_e 属性转义、翻译、显示WordPress函数:esc_attr_e 属性转义、翻译、显示
-
WordPress函数:esc_attr_x 带上下文的转义属性,翻译显示WordPress函数:esc_attr_x 带上下文的转义属性,翻译显示
-
WP Multilang WordPress翻译插件WP Multilang插件的主要功能是提供多语言支持,使用户能够创建多语言版本的网站,满足不同语言用户的需求。
-
WordPress公司官网主题在众多的WordPress企业官网主题中,追格公司推出了多款关于WordPress企业官网主题作品。我们之前已经分享过一些关于追格的企业官网主题,包括收费和免费版本,这些主题都因其独特的设计和出色的功能而深受用户喜爱。
-
WordPress必备:使用wp_get_theme()函数获取当前主题详情在WordPress中,wp_get_theme() 函数用于获取当前启用的主题或指定主题的信息。这个函数返回一个 WP_Theme 对象,该对象包含了主题的详细信息,如主题名称、版本、模板目录、样式表目录等。
暂无评论,抢个沙发...