私のカスタム「ホーム」ページは、functions.phpの次の(カスタム名に更新された)コードを使用して、カスタム日付フィールドを介してカスタム投稿をソートするように設定されています。
// sort order for home page
add_action('wp', 'wwgo_check_page');
function wwgo_check_page () {
if (is_page()) {
add_filter('get_previous_post_sort', 'sort_it');
add_filter('get_next_post_sort', 'sort_it');
add_filter('posts_orderby', 'sort_it' );
add_filter('posts_join', 'join_it' );
add_filter('posts_where', 'where_it' );
function sort_it () {
global $wpdb;
return " $wpdb->postmeta.meta_value ASC ";
}
function join_it( $join ) {
global $wpdb;
$join .= " LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
return $join;
}
function where_it( $where ) {
global $wpdb;
$where .= "AND $wpdb->postmeta.meta_key = 'deadline' ";
return $where;
}
}
}
ダンディでシンプルです。今。これをサイト全体で機能させたい。アーカイブページ、カテゴリなどへの投稿を、最初にカスタム日付フィールドで並べ替えたい。
何か案は?
「if
」をに変更しようとしましたis_archive()
が、効果がありませんでした。私<! is_single()>
もやってみました。
きっとシンプルなはずです。しかし、私はphpに慣れていないため、無知です。
こちらがサイトです。ホームページがうまくソートされているのがわかりますが、「詩」(投稿がいくつかあるだけ)をクリックしてもソートは機能しません。
どんな提案も大喜びで満たされます。
誠にありがとうございます。
それは良い習慣として、またはこれを解決するためですか?「is_archive」のコードを再度コピーしてみましたが、関数を再度呼び出すことはできましたが、並べ替えが機能しませんでした...
—
josh
はい、それは良い習慣です。さらに、関数を関数にラップしないでください。
—
カイザー、2011年
クール、クール(私はちょうどウェブサイトからコードをコピーしました、tbh。私はphp&wordpressが初めてです)。これをサイト全体で機能させる方法について何か進歩はありますか?私はそれがより多くのカスタムページで動作していて、同じ関数が(is_page())に設定されていますが、それでも私のアーカイブページには何もしません。私はそれらを修正する方法の手がかりがありません...
—
ジョシュ
関数に関数を配置する代わりに、代わりにクラスを使用してみてください。
—
Manny Fleurmond、2011年
josh_
衝突の命名を避けるため。