2015/1/20

WordPress Popular Postsの出力をがっつりカスタマイズする

これ、ちょっと難しそうだなあと思っていたのですが、先人がおられた。助かった。

WordPress Popular Postsの出力をフルカスタマイズするには。 | ダイダイデザイン

今回僕が取り組んだケースも、wpp_postをカスタマイズする形でいけました。ただちょっと違うところで引っ掛かって、コンテンツをテンプレートで条件分岐させてincludeして出し分けてるんですよね。こういう時は出力バッファというのを使うそうな。

function custom_single_popular_post( $content, $p, $instance ){
    $output = '';
     if(get_post_meta($p->id, 'priority', TRUE) == '1') {
        ob_start();
        $output .= '<article class="item-list itemA">';
        include(TEMPLATEPATH."/module_itemA.php");
        $output .= ob_get_contents();
        ob_clean();
        $output .= '</article>';
     } else {
        $output .= '<article class="item-list itemB">';
        ob_start();
        include(TEMPLATEPATH."/module_itemB.php");
        $output .= ob_get_contents();
        ob_clean();
        $output .= '</article>';
     }
     return $output;
}
add_filter( 'wpp_post', 'custom_single_popular_post', 10, 3 );

で、テンプレート側でget_the_permalink($p->id)とかget_the_title($p->id)とかやれば良いです。後はページ側で設定して読みこむだけ。

if (function_exists('wpp_get_mostpopular')) {
   $arg = array (
   'range' => 'monthly',
   'order_by' => 'views',
   'post_type' => 'custom_post_type',
   'limit' => 10,
   'wpp_start' => ' ',
   'wpp_end' => ' '
   );
   wpp_get_mostpopular($arg);
}

最初話聞いた時、アクセス数をカスタムフィールドに入れるタイプのプラグインに乗り換えないと難しいかなあと思ったんだけど、wpp_postというフックがあることがわかったので、プラグインの機能残したまま活用できました。大変助かりました。

加藤 康祐 / 企画・設計

プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。

加藤康祐企画設計

是非、フォローしてください!
Twitter / Instagram

(2012-10-5)
売り上げランキング: 14,705
100円