Ordnen Sie Beiträge nach Alphabet für jeden Buchstaben

Ich muss meine Beiträge für jeden Buchstaben alphabetisch sortieren. Ich meine:

Wenn Leute auf www.xxx.com/a eintreten, sehen sie nur Posts, indem sie A starten.

ABC XYZ

ADE KLM

SIND UYZ

Wenn Nutzer auf www.xxx.com/b eingehen, sehen sie nur Posts, indem sie B starten.

BCK OIO

BHJ PEP

Ich hoffe du verstehst was ich will. Ich habe diesen Code gegründet:

 'title', 'order' => 'ASC', 'posts_per_page'=>-1, 'caller_get_posts'=>1 ); $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo 'Alphabetic index of all ' . count($my_query->posts) . ' posts'; while ($my_query->have_posts()) : $my_query->the_post(); $this_char = strtoupper(substr($post->post_title,0,1)); if ($this_char != $last_char) { $last_char = $this_char; echo '

'.$last_char.'

'; } ?>

<a href="https://wordpress.stackexchange.com/questions/147933/order-posts-by-alphabetical-for-each-letter/" rel="bookmark" title="Permanent Link to ">

Dieser Code listet jedoch alle Posts auf einer Seite alphabetisch auf. Wie ich schon sagte, ich möchte nur das gleiche, aber für einen Buchstaben, den ich spezifiziere.

Danke, dass du mir geholfen hast.

Solutions Collecting From Web of "Ordnen Sie Beiträge nach Alphabet für jeden Buchstaben"

Das finde ich für diese Frage. Zwei Codes, die ich gefunden habe, wurden von MichaelH von wordpress.org kodiert. Auch er wird diesen Beitrag wahrscheinlich nicht sehen, ich möchte ihm danken.

Jetzt muss ich diese Beiträge nur noch nach einer bestimmten Kategorie sortieren. Wenn jemand weiß, wie man sie mit der angegebenen Kategorie sortiert, bitte hilf mir. Vielen Dank.

  < ?php //get all post IDs for posts beginning with cap B, in title order, //display posts $first_char = 'B'; $postids=$wpdb->get_col($wpdb->prepare(" SELECT ID FROM $wpdb->posts WHERE SUBSTR($wpdb->posts.post_title,1,1) = %s ORDER BY $wpdb->posts.post_title",$first_char)); if ($postids) { $args=array( 'post__in' => $postids, 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1, 'caller_get_posts'=> 1 ); $my_query = null; $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo 'List of Posts Titles beginning with the letter '. $first_char; while ($my_query->have_posts()) : $my_query->the_post(); ?> 

< ?php the_title(); ?>

< ?php endwhile; } wp_reset_query(); // Restore global post data stomped by the_post(). } ?>

Dieser Code verwendet den letzten Buchstaben in der URL, um nach allen Posts zu suchen, die mit diesem bestimmten Buchstaben beginnen. So gibt mysite.com/a alle Beiträge zurück, die mit dem Buchstaben “a” beginnen. Damit dies richtig funktioniert, würde ich vorschlagen, für jeden Buchstaben des Alphabets eine Kategorie zu erstellen.

Hier ist eine Kombination aus mehreren Teilen des Codes.

Zuerst müssen Sie die aktuelle URL der Seite abrufen, auf der Sie sich befinden. Dank Stephen Harris wird der folgende Code das tun

 $current_url = home_url(add_query_arg(array(),$wp->request)); 

Zweitens müssen Sie jetzt, da Sie die aktuelle URL haben, alles vor dem letzten entfernen / und nur den Buchstaben behalten. Danke an DisgruntledGoat

 $id = substr( $current_url, strrpos( $current_url, '/' )+1 ); 

Ok, jetzt, da du den letzten Buchstaben hast, musst du diesen in eine Abfrage zurückbringen, um alle Beiträge zu erhalten, die mit dem Buchstaben beginnen. Nochmals, danke geht an 21zna9

 $request = $id; $results = $wpdb->get_results( " SELECT * FROM $wpdb->posts WHERE post_title LIKE '$request%' AND post_type = 'post' AND post_status = 'publish'; " ); 

Jetzt alles in eine funktionierende Abfrage setzen.

 
    < ?php global $wpdb, $wp; $current_url = home_url(add_query_arg(array(),$wp->request)); $id = substr( $current_url, strrpos( $current_url, '/' )+1 ); $request = $id; $results = $wpdb->get_results( " SELECT * FROM $wpdb->posts WHERE post_title LIKE '$request%' AND post_type = 'post' AND post_status = 'publish'; " ); if ( $results ) { foreach ( $results as $post ) { setup_postdata ( $post ); ?>
  • < ?php get_template_part( 'content', get_post_format() ); ?>
  • < ?php } } else { ?>
    No posts found for this particular letter.
    < ?php } ?>

Sie müssen nur die Ausgabe der Schleife an Ihre Bedürfnisse anpassen. Der obige Code gibt Ihnen eine allgemeine Vorstellung davon, was zu tun ist