• 現在Count Per Dayの設定から管理画面にカラムを追加してそれぞれのページの閲覧数を表示しています。

    これを閲覧数でソート可能にする方法はありませんか?
    色々と試してみたのですが、カスタムフィールドとして追加されてるわけではなく
    counter-core.phpの中でDBのcpd_counterテーブルからとってきた値をプラグインが

    function cpdColumnContent($column_name, $id = 0)
    {
    	global $wpdb;
    	if( $column_name == 'cpd_reads' )
    	{
    		$c = $this->mysqlQuery('count', "SELECT 1 FROM $wpdb->cpd_counter WHERE page='$id'", 'cpdColumn_'.$id.'_'.__LINE__);
    		$coll = get_option('count_per_day_posts');
    		if ( $coll && isset($coll['p'.$id]) )
    			$c += $coll['p'.$id];
    		echo $c;
    	}
    }

    で表示してるようなのですが

    これが恐らく昔のWPでカスタムフィールド数字のソート順序がうまくいかなかったのと同じようにStringとして扱われてるためか、sortableなカラムにするためfunctions.phpへ
    manage_edit-post_sortable_columnsでfilterフックしてもちゃんとした順序でソートされません。

    そこで詰まってしまい進めなくなってしまいました。
    どなたかお知恵拝借お願い致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 1. ソート可能なように発行されるSQLが、postsテーブルとcpd_counterで内部結合させる必要があります。(posts_joinフィルターへのフック)
    2.ソートさせた際にURLに現れるソート用のパラメーターを元に、SQLの ORDER 句がcpd_counter のフィールドを基準にするように書き換える必要があります。(posts_orderbyフィルターへのフック)

    補足すると、記事の一覧表示は、WP_Queryを用いて取得するため、ソートのパラメーターとして利用できるものは、基本的にWP_Queryの順序ベースパラメータであり、それ以外のデータを用いてソートが出来るようにするには、別途カスタマイズが必要になります。

2件の返信を表示中 - 1 - 2件目 (全2件中)

トピック「管理画面でCountPerDayの閲覧数カラムをソート可能に」には新たに返信することはできません。