query_posts nu ordonează după titlu

6 iun. 2012, 12:42:45
Vizualizări: 50K
Voturi: 4

Pare o eroare stupidă, dar cum pot ordona după titlu? Oricum le ordonează după dată! Folosesc:

query_posts( array( 
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'orderby'        => 'title',
    'order'          => 'ASC'
) );

Vreau să folosesc acest cod într-o funcție ca SHORTCODE. Ceea ce încerc să realizez este să creez o hartă a site-ului / un index cu toate intrările în ordine alfabetică. De asemenea, folosesc cea mai nouă versiune de WP.

7
Comentarii

Putem vedea un var_dump() sau print_r() al interogării generate? De asemenea, un pic de context pentru acest cod ar fi util. Modifici interogarea loop-ului principal sau rulezi un loop secundar?

Chip Bennett Chip Bennett
6 iun. 2012 18:26:07

Am creat o funcție care funcționează ca shortcode, afișează toate intrările precum Index, să spunem că afișează o literă și după acea literă toate intrările care încep cu acea literă, ca o hartă a site-ului. Voi posta array-ul în Întrebare.

Tommixoft Tommixoft
6 iun. 2012 19:36:10

Ei bine, array-ul părea ENORM și era ordonat după dată, așa că am decis să nu-l postez aici. Nu sunt nou în PHP sau WordPress, așa că nu cred că îmi lipsește ceva în cod. Ți-am postat o versiune simplificată a funcției mele.

Tommixoft Tommixoft
6 iun. 2012 19:45:50

Folosești asta ca un SHORTCODE? Adică îl execuți în interiorul conținutului articolului**?

Chip Bennett Chip Bennett
6 iun. 2012 19:51:09

Da, dar folosesc shortcode în pagină, de asemenea conținutul meu este gol, doar shortcode, oricum, deci ce pot face? Ar trebui să creez un template și să evit shortcode-ul? De asemenea, cred că ar trebui să resetez query-ul și să creez unul nou cu al meu..deci unde e problema? Sunt confuz.

Tommixoft Tommixoft
6 iun. 2012 19:53:42

O pagină este un articol. Asta nu va face nicio diferență. Sunt atât de multe lucruri greșite în această abordare, încât nici nu știu de unde să încep, sincer. Ce anume încerci să realizezi în final? Probabil va trebui să reformulăm întrebarea în consecință, pentru a putea răspunde corespunzător.

Chip Bennett Chip Bennett
6 iun. 2012 20:18:16

cum am spus, vreau să fac o listă alfabetică a tuturor postărilor (tipul meu selectat de postare, în acest caz pagina este de exemplu). Astfel vizitatorii pe o singură pagină pot vedea toate intrările ca un index de carte. Dar am înțeles că trebuie să folosesc SQL atunci, în loc de interogarea postărilor, mulțumesc pentru ajutor, voi încerca o nouă abordare.

Tommixoft Tommixoft
6 iun. 2012 20:20:59
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 2
1
10

Mulțumesc lui Chip Bennett care mi-a atras atenția că folosesc greșit query_posts în interiorul conținutului. Așa că am folosit get_posts și am obținut ceea ce doream, mulțumesc!

Iată un exemplu despre cum poți face acest lucru, dacă ai aceeași problemă ca mine:

function some_name(){

global $post;
$tmp_post = $post;
$args = array( 'post_type'=>'page', 'numberposts' => -1, 'orderby'=> 'title', 'order' => 'ASC' );
$myposts = get_posts( $args );

         if ( !empty($myposts) ) {
              foreach( $myposts as $post ) : setup_postdata($post);
              the_title();
              echo '<br>';             

              endforeach;

         } 

          $post = $tmp_post;

 }
6 iun. 2012 20:31:50
Comentarii

Dacă vei adăuga codul real pe care l-ai folosit pentru a rezolva întrebarea ta, voi vota cu plăcere.

Chip Bennett Chip Bennett
6 iun. 2012 21:40:48
0
-1

Un alt articol conține acest cod în interiorul unei funcții, dar pentru cei care doresc să adauge simplu postări ordonate alfabetic într-o temă personalizată, de exemplu, puteți folosi următoarele...

<?php // Ordonează postările alfabetic din categoria ***
global $post;
$temp_post = $post;
$args = array( 'category' => *categoryID*, 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC' );
$these_posts = get_posts( $args );

if( !empty($these_posts) ) {
    foreach( $these_posts as $post ) : setup_postdata($post);
?>

<?php 

/* Codul HTML/PHP care afișează fiecare postare */

the_title("<h2>", "</h2>");
the_content("<div class='content'>", "</div>"); 

?>

<?php 
    endforeach; // Sfârșitul buclei.
}
$post = $temp_post;
?>
19 mar. 2018 21:37:44