WP_Query custom order and pagination

You want to orderby ‘date’ not by ‘meta_value_num’ because it is to order numerically. So if you were ordering items by their price, then you would want to use ‘meta_value_num’. The meta_key ‘news_date’ is most likely in date format.

You should also cast the meta_value to DATE using ‘meta_type’ => ‘DATE’.

$args = array(
    'post_type'       => 'news',
    'posts_per_page'  => 10,
    'meta_key'        => 'news_date',
    'meta_type'       => 'DATE'
    'orderby'         => 'meta_value',
    'order'           => 'DESC',
    'paged'           => (int)$my_page
);

If your getting the correct order, you could always calculate the offset yourself by multiplying paged * posts_per_page. Also make sure that your $paged variable is an integer if you grab it from a query string then it is not an Integer.