Interogare menu_order pentru tipuri de postări personalizate
Am adăugat 'supports' => 'page-attributes'
la tipul meu de postare personalizată și acum am caseta meta pentru ordonarea paginilor.
Când folosesc argumentul 'sort_column' => 'menu_order'
cu get_pages()
pe tipul meu de postare personalizată, totul se ordonează corect.
Atunci de ce paginile personalizate nu se ordonează corect când interoghez postările folosind query_posts(array('orderby' => 'menu_order'))
Și ce pot face pentru a le ordona după ordinea din meniu?
Iată interogarea pe care o folosesc în cazul în care cineva dorește să o vadă.
<?php
// Obține termenul curent sau folosește primul element din array-ul meniului
$current_term = ($wp_query->query_vars['section'] <> '') ? $wp_query->query_vars['section'] : $menu_arr[0];
query_posts(array( 'post_type' => 'module',
'orderby' => 'menu_order',
'tax_query' => array(array( 'taxonomy' => 'section',
'field' => 'slug',
'terms' => $current_term )),
'post_parent' => 0 ));
?>

Tocmai am trebuit să fac același lucru ca tine, iată ce am făcut pentru a funcționa:
'supports' => array('title', 'editor', 'thumbnail', 'page-attributes')
Înregistrează tipul de postare cu suport pentru atributele de pagină. Aceasta adaugă caseta meta pentru ordonare în meniu pe ecranul de editare. De acolo poți stabili ordinea.
Apoi rulează interogarea personalizată:
$args = array(
'numberposts' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
'post_type' => 'staff'
);
$staff = get_posts($args);
Setează orderby
la menu_order și order
la ASC. Reține că dacă nu setezi o valoare pentru ordonarea în meniu, aceasta va fi implicit 0. Astfel, orice postări fără ordine setată vor apărea primele.

Mulțumesc, am reușit să rezolv problema acum ceva timp. Dar apreciez ajutorul! ;)

În cazul în care cineva se mai zbate cu această problemă, trebuie să știți că argumentul 'order' este obligatoriu pentru ca funcția să funcționeze. Am setat 'order_by' => 'menu_order'
și nu a funcționat până când nu am adăugat și 'order' => 'ASC'

Am avut probleme cu get_posts
în Wordpress 3.4.1. Nu a funcționat decât după ce am trecut la utilizarea query_posts

în functions.php am folosit acest cod:
add_action( 'init', 'create_Videos' );
function create_Videos() {
register_post_type('videos', array(
'label' => __('Videoclipuri'), // Videoclipuri
'singular_label' => __('Videoclip'), // Videoclip
'public' => true,
'show_ui' => true,
'capability_type' => 'article',
'hierarchical' => true,
'rewrite' => false,
'query_var' => true,
'supports' => array('title', 'editor', 'page-attributes')
));
}
și în tema mea acest cod:
$args = array(
'numberposts' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
'post_type' => 'videos'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
Asta a funcționat pentru mine La revedere

sort_column=menu_order
sortează paginile doar în funcție de ordinea lor în modul de editare, nu în funcție de ordinea stabilită în view > meniuri
(tradus), dacă doriți asta puteți face astfel:
$children = get_pages('child_of='. $topID);
// 'sort_column=menu_order' <-- sortează doar după ordinea postărilor în modul de editare (pagina > editare) nu după ordinea din meniu setată în view > meniuri
// wp_nav_menu are ceea ce avem nevoie, să le sortăm în același mod.
$options = array(
'container' => '',
'echo' => false,
);
$nav = wp_nav_menu($options);
$nav = strip_tags($nav);
$nav = str_replace("\r", '', $nav);
$nav = explode("\n", $nav);
//print_r($nav);
$newChildren = array();
foreach ($nav as $item) {
$item = trim($item);
$run = true;
for ($c = 0; $c < count($children) && run; $c++) {
$child = $children[$c];
if (strcmp($child->post_title, $item) == 0 && !in_array($child, $newChildren)) {
$newChildren[] = $child;
$run = false;
}
}
// Adăugarea copiilor pe care nav_menu le lipsește, nu sunt sigur de ce nu toți sub-copiii
// sunt adăugați la primul copil aici..(funcționează dar nu știu de ce :/)
if ($run == true) {
for ($c = 0; $c < count($children) && run; $c++) {
$child = $children[$c];
if (!in_array($child, $newChildren)) {
$newChildren[] = $child;
}
}
}
}
$children = $newChildren;
