query multiple taxonomy and show post count

I’m sure that a custom sql query would work much better but here is an option using the WordPress Tools available //first get all categories $categories = get_terms( ‘category’, array( ‘orderby’ => ‘count’, )); //then create an array for easier processing foreach ( $categories as $cat ) { $slugs[] = $cat->slug; $counts[$cat->slug][‘count’] = $cat->count; } … Read more

Very slow query

To check if the query itself is slow or anything else slows it down, try running your query directly in the database, and have a look at how long it takes there. <?php echo $GLOBALS[‘wp_query’]->request; ?> This shows you the latest Query that WordPress ran in your database. If the query is really slow in … Read more

How to delete a transient on post/page publish?

I am considering it for publication of a new post. Add the below code in your active theme’s functions.php file. function wpse_delete_query_transient( $post ) { // Deletes the transient when a new post is published delete_transient( ‘d_results’ ); } add_action( ‘new_to_publish’, ‘wpse_delete_query_transient’ ); This will delete the transient every time a new post is published. … Read more

Query by one meta_key and sort by another (possibly NULL value)

I don’t think there’s a way to do it without using filters. Using posts_clauses you could do: function wpse163696_posts_clauses( $pieces, $query ) { if ( $query->get( ‘orderby’ ) != ‘dealer_date’ ) { return $pieces; } global $wpdb; $order = $query->get( ‘order’ ); $pieces[ ‘join’ ] .= $wpdb->prepare( ‘ LEFT JOIN ‘ . $wpdb->postmeta . ‘ … Read more

wp_dropdown_categories with multiple select

wp_dropdown_categories has a filter applied to the output that is called right before the function returns or echos the output. With this you can add a filter to your funtions.php file that manipulates the select field and adds a multiple attribute to it. The filter below would search for the select opening tag and add … Read more

Compare two numeric custom fields

I think something like this, but not tested, and my SQL-foo is rather weak: $test = $wpdb->get_col( $wpdb->prepare( ” SELECT DISTINCT $wpdb->posts.* FROM $wpdb->posts INNER JOIN $wpdb->postmeta AS mt1 ON ( wp_posts.ID = $wpdb->postmeta.post_id ) WHERE $wpdb->postmeta.meta_key = ‘goals-made’ AND( mt1.meta_key = ‘goals-against’ AND CAST($wpdb->postmeta.meta_value AS INT) > CAST(mt1.meta_value AS INT) ) ” )); This … Read more