ion
  • 0
Новичок

Использование цикла внутри администратора

  • 0

У меня есть следующая проблема:

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

Я хочу создать раскрывающийся список со всеми сообщениями, подпадающими под категорию 10.

Я создал цикл внутри файла функций для получения нужных мне сообщений и создания раскрывающегося списка выбора.

Поэтому, когда я иду в admin -> posts и выбираю пост для редактирования, я получаю следующую проблему:

последний пост будет загружаться независимо от того, какой я выберу.

Вот код, используемый внутри файла функций, а затем вызываемый при создании html-кода для пользовательского мета-поля:

function get_project_ids($proj_cat = 10) {

$output = '';

$catt = get_categories('parent='.$proj_cat.'&hide_empty=0');

    foreach ($catt as $c) :

        $output .= '<optgroup label="'.$c->name.'">';
        $d = get_categories('parent='.$c->cat_ID.'&hide_empty=0');

            foreach ($d as $e) :
            $output .= '<optgroup label="'.$e->name.'">';

                $args = array( 'nopaging' => true, 'cat' => $e->cat_ID );
                $project_query = new WP_Query( $args );

                    while ( $wp_query->have_posts() ) : $wp_query->the_post();
                        $project_id = (get_post_meta($post->ID, 'project_code', true) != "")?get_post_meta($post->ID, 'project_code', true):"";
                        $output .= '<option value="'.$post->ID.'">'.$project_id.'-'.get_the_title().'</option>';    
                    endwhile; 

                wp_reset_postdata();
                $wp_query = null;
                $wp_query = $original_query;

            $output .= '</optgroup> <!-- END level-b -->';
        endforeach;

        $output .= '</optgroup> <!-- END level-a -->';
    endforeach;

return $output;
Share
  1. Откуда $e приходит? Во-вторых: Где оригинал $output, который вы тоже .= добавляете? В- третьих: Почему вы устанавливаете $wp_query на null ? Нет причин делать это.

    • 0
    • Хорошо, ты прав, я должен быть более ясным. (i) $e происходит из цикла foreach и является идентификатором категории (ii) $output инициализируется несколькими строками назад. (iii) На самом деле я следую примеру из кодекса, где исходный запрос wp временно отложен…. Дело в том, что этот запрос по какой-то причине заставляет тот же пост на странице редактирования поста администратора.

      • 0
    • Не могли бы вы просто опубликовать весь код? А затем добавить информацию в свой вопрос? Подсказка: вы можете отредактировать свой вопрос. Подсказка № 2: у вас есть ссылка «помощь» для комментирования, и вы можете показать вам разметку, например код в комментариях и прочее. Спасибо.

      • 0
    • Великий человек!!!! Это сработало… Я отредактирую свой оригинальный пост с рабочим кодом.

      • 0
  2. Я не уверен в этой проблеме, но я бы посоветовал попробовать реорганизовать это, чтобы использовать get_posts() теги и шаблоны, которые могут работать без $post глобальной переменной. Вообще не трогайте глобалы.

    Циклы во внешнем интерфейсе сейчас почти цивилизованы, но внутренности администратора все еще очень дикие. 🙂

    • 0

Оставить ответ

You must login to add an answer.