WordPress.org

Make WordPress Core

Ticket #11375: has-private-posts.php

File has-private-posts.php, 1.0 KB (added by Denis-de-Bernardy, 4 years ago)
Line 
1<?php
2static function has_private_posts($user_id = null) {
3        global $wpdb;
4       
5        $has_private_posts = get_transient('has_private_posts');
6        if ( $has_private_posts === false ) {
7                $wpdb->show_errors();
8                $has_private_posts = intval($wpdb->get_var("SELECT EXISTS( SELECT 1 FROM $wpdb->posts WHERE post_status = 'private' );"));
9                set_transient('has_private_posts', $has_private_posts);
10        }
11       
12        if ( !$user_id )
13                return $has_private_posts;
14        elseif ( !$has_private_posts )
15                return false;
16       
17        $user_id = intval($user_id);
18        $has_private_posts = get_usermeta($user_id, 'has_private_posts');
19       
20        if ( $has_private_posts )
21                return true;
22        elseif ( $has_private_posts === array() )
23                return false;
24       
25        $has_private_posts = intval($wpdb->get_var("SELECT EXISTS( SELECT 1 FROM $wpdb->posts WHERE post_status = 'private' AND user_id = $user_id );"));
26        if ( !$has_private_posts )
27                $has_private_posts = array();
28       
29        update_usermeta($user_id, 'has_private_posts', $has_private_posts);
30       
31        return !empty($has_private_posts);
32} # has_private_posts()
33?>