Function Reference: geodir_get_posts_count

Summary

Get the posts counts for the current post type.

Global Values

$wpdb
(object) (required) WordPress Database object.

Default: None
$plugin_prefix
(string) (required) Geodirectory plugin table prefix.

Default: None

Package

GeoDirectory

Parameters

$post_type
(string) (required) Post type.

Default: None

Return Values

(int)
  • Posts count.

Change Log

Since: 1.4.6

1.6.4 Updated to filter posts.

Filters

‘geodir_get_posts_count’ [Line: 5053]

‘geodir_imex_count_posts’ [Line: 5068]

Source File

geodir_get_posts_count() is located in geodirectory-admin/admin_functions.php [Line: 5029]

Source Code

function geodir_get_posts_count( $post_type ) {
    global $wpdb, $plugin_prefix;

    if ( !post_type_exists( $post_type ) ) {
        return 0;
    }
        
    $table = $plugin_prefix . $post_type . '_detail';

    // Skip listing with statuses trash, auto-draft etc...
    $skip_statuses = geodir_imex_export_skip_statuses();
    $where_statuses = '';
    if ( !empty( $skip_statuses ) && is_array( $skip_statuses ) ) {
        $where_statuses = "AND `" . $wpdb->posts . "`.`post_status` NOT IN('" . implode( "','", $skip_statuses ) . "')";
    }
    
    /**
     * Filter the SQL where clause part to filter posts count in import/export.
     *
     * @since 1.6.4
     * @package GeoDirectory
     *
     * @param string $where SQL where clause part.
     */
    $where_statuses = apply_filters( 'geodir_get_posts_count', $where_statuses, $post_type );

    $query = $wpdb->prepare( "SELECT COUNT({$wpdb->posts}.ID) FROM {$wpdb->posts} INNER JOIN {$table} ON {$table}.post_id = {$wpdb->posts}.ID WHERE {$wpdb->posts}.post_type = %s " . $where_statuses, $post_type );

    $posts_count = (int)$wpdb->get_var( $query );
    
    /**
     * Modify returned post counts for the current post type.
     *
     * @since 1.4.6
     * @package GeoDirectory
     *
     * @param int $posts_count Post counts.
     * @param string $post_type Post type.
     */
    $posts_count = apply_filters( 'geodir_imex_count_posts', $posts_count, $post_type );

    return $posts_count;
}