Как исправить эту функцию WordPress, чтобы она не возвращала страницу 404? - PullRequest
2 голосов
/ 22 июня 2010

У меня есть следующая функция, которую я добавил в мой файл functions.php в WordPress.Идея состоит в том, что он собирает все заголовки постов 'fsmodel' (пользовательский тип поста, который я создал).Затем он возвращает их в виде массива, который я затем использую, чтобы заполнить тег select в настраиваемых мета-полях для второго настраиваемого типа записи.модель лодки, и тип поста 'fsboat' будет иметь выпадающий список с именами моделей для выбора.

Теперь, похоже, в Dashboard это работает нормально - выпадающий списокзаполняется, как и ожидалось.Однако при сохранении сообщение не отображается в списке редактирования.Также на веб-сайте все страницы выводятся в виде страницы с ошибкой 404. Когда эта функция активна.

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


function fs_model_array() {
$models_array = array();
$loop = new WP_Query(array(
    'post_type' => 'fsmodel',
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order' => 'ASC',
    'post_status' => 'publish'
    ));
while ( $loop->have_posts() ) : $loop->the_post();
$models_array[] = get_the_title();
endwhile;
return $models_array;
};

Ответы [ 4 ]

1 голос
/ 22 июня 2010

ОК, я придумала решение (надеюсь, оно пока не работает).

Вместо создания цикла я просто использовал $ wpdb-> get_results для поиска в базе данных столбца с фильтром WHERE для пользовательского типа записи.

Затем запустите построитель массива:

$models_array = array();
$model_db = $wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_type='fsmodel' AND post_status = 'publish'");

foreach ($model_db as $model_db) {
    $models_array[] = $model_db->post_title;
}

Еще раз спасибо за ваше время, hsatterwhite! : -)

0 голосов
/ 03 мая 2018

Мне нравится ваше решение, но я бы сказал, что вам нужно вызывать глобальную переменную $post всякий раз, когда вы используете подобный цикл в функции, так как он присваивает его этой переменной.

function fs_model_array(){
  global $post;
  $models_array = array();
  $loop = new WP_Query(array(
    ...
0 голосов
/ 23 июня 2010

проблема в том, что вы вызываете цикл wordpress в незнакомом месте или в месте, где уже есть цикл)?


http://codex.wordpress.org/The_Loop

0 голосов
/ 23 июня 2010

Я думаю, вы можете обнаружить, что добавление wp_reset_query() в конец вашей функции решит ваши проблемы:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...