Запросите menu_order пользовательские типы сообщения

Я добавил 'supports' => 'page-attributes' к моему пользовательскому типу сообщения, и теперь у меня есть meta поле для упорядочивания страницы.

Когда я использую аргумент 'sort_column' => 'menu_order' с get_pages() на моем пользовательском типе сообщения все заказывает правильно.

Итак, почему пользовательские страницы не заказывают правильно, когда я запрашиваю использование сообщений query_posts(array('orderby' => 'menu_order'))

И что я могу сделать, чтобы заставить их заказывать согласно порядку меню?

Вот запрос, который я использую, упаковывают любого, хочет видеть его.

<?php 
    $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 ));
?>
5
23.06.2011, 01:31
3 ответа

Я должен был просто сделать то же самое как Вы, вот то, что я сделал для получения этой работы:

'supports' => array('title', 'editor', 'thumbnail', 'page-attributes')

Зарегистрируйте тип сообщения в поддержках атрибутов страницы. Это добавляет, что меню заказывает meta поле экрану редактирования. Оттуда можно разместить заказ.

Затем выполните мой пользовательский запрос:

$args = array(
    'numberposts' => -1,
    'orderby' => 'menu_order',
    'order' => 'ASC',
    'post_type' => 'staff'
);
$staff = get_posts($args);

набор orderby к menu_order и order к ASC. Помните, не устанавливаете ли Вы значение в порядке меню, он устанавливает его на 0. Таким образом, любые сообщения без набора порядка будут казаться первыми.

12
19.02.2020, 22:06
  • 1
    Спасибо, я закончил тем, что заставил это работать некоторое время назад. Но я ценю его! ;) –  cnotethegr8 25.07.2011, 23:09
  • 2
    В случае, если кто-либо еще царапает их головы по этому, это - присутствие аргумента 'порядка', который требуется, чтобы заставлять его работать. Я установил 'order_by' => 'menu_order' и это не работало, пока я также не добавил 'order' => 'ASC' –  jessica 25.07.2012, 02:17
  • 3
    я испытывал затруднения из-за get_posts с Wordpress 3.4.1. Не начинал работать, пока я не сместился к использованию query_posts –  acorncom 22.08.2012, 19:12
  • 4
    , Может подтвердить - март 2018, все еще сбои без 'order' => 'ASC' часть, а также orderby пункт. Странный, но, там Вы идете. –  Eric 22.03.2018, 16:01

в моем functions.php я использовал это:

add_action( 'init', 'create_Videos' );
function create_Videos() {
    register_post_type('videos', array(
        'label' => __('Videos'),
        'singular_label' => __('Video'),
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'article',
        'hierarchical' => true,
        'rewrite' => false,
        'query_var' => true,
        'supports' => array('title', 'editor', 'page-attributes')
    ));
}

и в моей теме, что:

    $args = array(
        'numberposts' => -1,
        'orderby' => 'menu_order',
        'order' => 'ASC',
        'post_type' => 'videos'
    );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();

Это - то, что работало на меня До свидания

2
19.02.2020, 22:06

sort_column=menu_order только страницы видов на основе их письменного указания не порядок Вы начинаетесь view > menus (переведенный), если Вы хотите это, можно сделать как это:

$children = get_pages('child_of='. $topID); 

// 'sort_column=menu_order' <-- only sorts by post order in writing mode (page > edit) not the menu order set in view > menus
// wp_nav_menu has what we need, let's sort it the same way.
$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;
        }
    }

    // Adding the children the nav_menu is lacking, not sure why not all sub-children 
    //  are added to the first child here..(works but don't know why :/)
    if ($run == true) {
        for ($c = 0; $c < count($children) && run; $c++) {              
            $child = $children[$c];     
            if (!in_array($child, $newChildren)) {
                $newChildren[] = $child;
            }
        }           
    }
}
$children = $newChildren;
0
19.02.2020, 22:06

Теги

Похожие вопросы