Ordnen Sie nach Titel – aber jetzt in WordPress Func gebaut, sortieren the_title

Ich habe eine ziemlich einfache WP-Installation, bei der ich das qtranslate-Plugin verwende, um die Seite in zwei Sprachen zu halten. Das Problem ist, ich muss Beiträge nach Titel sortieren, und wie Sie wahrscheinlich wissen (wie Sie qtranslate verwenden), verursacht das Problem – es sortiert Beiträge durch mysql Einträge (die zwei wegen der Sprachen sind), und das gibt mir unerwünschte Reihenfolge (aus der ersten Sprache).

Was ich machen will, ist den ersten Brief von evert post zu bekommen und ihn danach zu sortieren, in php, glaubst du es ist eine gute Lösung? Wenn ja, wie geht das am besten?

 'publishers', 'orderby' => 'title', 'order' => 'ASC' ) ); ?> 

Solutions Collecting From Web of "Ordnen Sie nach Titel – aber jetzt in WordPress Func gebaut, sortieren the_title"

Ich fürchte, es wäre sehr schwer zu machen. qTranslate speichert alle Titel in einem databasefeld als verkettete Zeichenfolge mit einem zusätzlichen Markup, so dass es nicht möglich ist, sie mit SQL zu sortieren und dies schnell zu tun.

Sie können eines von 2 Dingen tun:

1. Beenden Sie die Verwendung von qTranslate

Es hat wirklich viele andere Fehler. Sie können stattdessen WPML oder Polylang verwenden – beide sind viel besser.

2. Sortieren Sie sie in PHP

Sortieren Sie die Posts in der Abfrage nicht mit SQL und sortieren Sie sie nach der Ausführung dieser Abfrage nicht mit PHP. WP_Query speichert gefundene Posts in $wp_query->posts . Sie können dieses Array mit PHP sortieren. Natürlich müssen Sie alle Beiträge auswählen, damit es funktioniert. Wenn also viele Beiträge in dieser Abfrage vorhanden sind, ist das eine ziemlich schlechte Idee. Aber wenn es nur wenige von ihnen gibt, dann sollte es nicht so schlimm sein …

Beispielcode unten – hier drin geschrieben, kann also errorshaft sein.

 < ?php $my_query = new WP_Query( array('post_type'=>'page', 'orderby'=>'title', 'order'=>'ASC', 'posts_per_page'=>-1) ); if ( $my_query ->have_posts() ): ?> 
    < ?php $found_posts = array(); foreach ( $my_query->posts as $k=>$p ) { $found_posts[ apply_filters('the_title', $p->post_title) ] = $p; } ksort($found_posts); $i=0; foreach ($found_posts as $k=>$p) { $my_query->posts[$i++] = $p; } ?> < ?php while ( $my_query->have_posts() ): $my_query->the_post(); ?>
  • < ?php the_title(); ?>

  • < ?php endwhile; ?>
< ?php endif; wp_reset_postdata(); ?>