例えば、post_typeが「hoge1」と「hoge2」の投稿も含めたい場合。

まず、wordpress-popular-posts.phpの510行目(ver. 2.2.1)

1
$nopages = "AND $wpdb->posts.post_type = 'post'";

1
$nopages = "AND $wpdb->posts.post_type IN ('post', 'hoge1', 'hoge2')";

とする。
これで「hoge1」と「hoge2」も対象に含まれるようになる。

次に、wpp_get_mostpopular()で吐き出されるものでは柔軟にいじれないので、ob_start()で投稿IDだけ抜き出し、投稿IDの配列を生成する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if ( function_exists( 'wpp_get_mostpopular' ) ) {
    $args = array (
        'order_by' => 'views',// views=閲覧数, comments=コメント数
        'range' => 'all',// dialy=日間, weekly=週間, monthly=月間, all=総数
        'stats_comments' => 0,// コメント数表示
        'limit' => 10,
    );
 
    ob_start ();
    wpp_get_mostpopular( http_build_query ( $args ) );
    $output = ob_get_contents ();
    ob_end_clean ();
 
    preg_match_all ( '/([0-9]+)\.html/', $output, $result );
    $p_arr = $result[1];
 
    if ( count ( $p_arr ) > 0 ) {
        $args = array (
            'post_type' => array ( 'hoge1', 'hoge2' ),
            'post__in' => $p_arr,
        );
        query_posts( $args );
 
        if ( have_posts() ) {
            while ( have_posts() ) {
                the_post();
            }
            wp_reset_query();
        }
    }
}