Bestellen Sie Posts (über die gesamte Site) nach dem Datum der Metadaten

Meine benutzerdefinierte Home-Seite ist so eingerichtet, dass sie meine benutzerdefinierten Posts über das benutzerdefinierte Datumsfeld mit diesem (in benutzerdefinierten Namen umbenannten) Code in functions.php sortiert:

// 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; } } } 

Was ist dandy und einfach. Jetzt. Ich möchte, dass dies auf der gesamten Website funktioniert. Ich möchte, dass Beiträge auf Archivseiten, Kategorien usw. zuerst nach dem benutzerdefinierten Datumsfeld sortiert werden.

Irgendwelche Ideen?

Ich habe versucht, das ‘ if ‘ zu is_archive() zu is_archive() aber das hatte keine Wirkung. Ich habe es versucht auch.

Ich bin sicher, es sollte etwas Einfaches sein. Aber ich bin neu in PHP und daher ahnungslos.

Hier ist die Seite , auf der Sie sehen können, dass die Homepage gut sortiert ist, aber wenn Sie auf “Poesie” klicken (die einzige mit ein paar Posts), funktioniert die Sortierung nicht.

Irgendwelche Vorschläge werden mit viel Freude getroffen.

Dankesehr.

Solutions Collecting From Web of "Bestellen Sie Posts (über die gesamte Site) nach dem Datum der Metadaten"

Verwenden Sie den query_vars Filter oder den Anforderungsfilter , um orderby hinzuzufügen, wenn orderby nicht in der orderby orderby ist

Warum verwendest du nicht query_posts ()?

 < ?php query_posts('meta_key=key_name&orderby=key_name&sort=ASC'); if ( have_posts() ) : while ( have_posts() ) : the_post(); endwhile; else: endif; wp_reset_query(); 

Sie können die Abfrage auch mit dem pre_get_posts-Hook ändern und Ihre bedingte Sortierung dort mit is_archive (), is_page () usw. durchführen.

Ich schaue mir auch deine andere Frage an .

Wenn Sie nach dem Datum-Meta-Wert sortieren möchten, müssen sie natürlich im selben Format sein – ich nehme an, es ist das Datumsformat von PHP (‘m-y’), wie Sie es in Ihrem Code dort angegeben haben?

Wenn dies der Fall ist, können Sie feststellen, dass Sie ein besseres Ergebnis erhalten, wenn Sie Ihren meta_value in diesem Code in meta_value_num ändern.

Nicht sicher, das wird funktionieren, aber vielleicht einen Versuch wert sein.