WP_Query order custom post type with certain meta key value by post modified date

There is an ORDER BY clause in that query that should not have been generated by those arguments. Plus, it doesn’t look like a WordPress query– note the capitalization. WordPress tends to use all uppercase for SQL functions and operators.

I suspect that there is a filter on posts_orderby or posts_clauses that is altering that query when it should not be. When I test your query the ORDER BY clause is what you would expect from those arguments– ORDER BY wp_posts.posts_modified— which lends weight to the theory that something is mucking up the query.

Find the function that is altering the query, post it, and I will modify the answer. Look for add_filter('posts_orderby' or add_filter('posts_clauses' in your plugins and theme.

As written, that function overwrites the ORDER BY for most every query. It is difficult to tell where/when that filter is supposed to run, but restricting it to the main query and to categories ought to help.

function category_filter_orderby($orderby) { 
  if (is_main_query() || is_category()) {
    global $wpdb; 
    //return "post_date DESC"; 
    $orderby = "(select $wpdb->postmeta.meta_value from $wpdb->postmeta where $wpdb->postmeta.post_id=$wpdb->posts.ID and $wpdb->postmeta.meta_key = 'featured_c') ASC,post_date DESC"; 
  }
  return $orderby; 
} 

I don’t know if that should be an OR (||) or an AND (&&), or if there should be other conditionals. I’d have to read the mind of the theme designer to tell.