Intereting Posts
Как добавить ящик автора под сообщением? Условно загрузить CSS / JS / PHP в wp-admin при использовании мобильного устройства Измените имя пользователя на ник в разделе комментариев. обработка данных csv с пользовательским типом сообщения Предупреждать пользователя о том, что данные могут быть потеряны для пользовательских страниц Могу ли я иметь тот же сайт WordPress под другим URL-адресом? Как использовать is_admin в содержании страницы? Почему мое меню не заказано правильно? Перезапуск страницы страницы архива будет отличаться от пользовательского типа сообщений Проверка Если автор комментариев зарегистрирован Правило перезаписи не перенаправляется правильно Как включить FTPS для использования WP / WP Clone в Jessie? Переупорядочение изображений в существующем посте в wordpress 3.6.1 Кодировка символов для wp_options Где я могу поместить мои add_action (… и add_filter (… и мне нужно их удалить?

Если post_type – это или это

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

 function set_custom_post_types_admin_order($wp_query) { if (is_admin()) { $post_type = $wp_query->query['post_type']; if ( $post_type == 'games') { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } if ( $post_type == 'consoles') { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } } } add_filter('pre_get_posts', 'set_custom_post_types_admin_order'); 

Есть ли способ объединить эти два оператора if , поэтому я не повторяю код. Что-то вроде этого:

 if ( $post_type == 'games' OR 'consoles') OR { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } 

Благодаря!

Solutions Collecting From Web of "Если post_type – это или это"

Используйте оператор switch и объедините соответствующие случаи.

 function set_custom_post_types_admin_order( $query ) { // If not admin or main query, bail. if( !is_admin() || !$query->is_main_query() ) return; $post_type = $query->query['post_type']; switch( $post_type ) { case 'games': case 'consoles': //case 'other_example_match': $query->set('orderby', 'title'); $query->set('order', 'ASC'); break; default: return; } } add_action( 'pre_get_posts', 'set_custom_post_types_admin_order' ); 

Надеюсь, это поможет.

Во-первых, вы захотите быть очень осторожными при подключении к крюку pre_get_posts. Это срабатывает при каждом запросе, который запускается на вашем сайте. Я бы настоятельно рекомендовал добавить другое условие или два к началу вашей функции, чтобы ограничить область действия этого фильтра.

Во-вторых, я бы предложил проверить if ( in_array( $post_type, array( 'games', 'consoles' ) ) как лучшая альтернатива вашему состоянию.

То, как вы используете оператор OR здесь, на самом деле неверно, и вам нужно расширить условие лучше, например, if ( $post_type == 'games' || $post_type == 'consoles' ) . Если вы решите придерживаться этого способа написания условия, я бы также предложил принять привычку писать «условия yoda», например: if ( 'games' == $post_type || 'consoles' == $post_type ) .

В «состоянии yoda» за значением следует переменная, что значительно облегчает обнаружение символа missing = и ошибочного утверждения. Ваша жизнь будет намного счастливее, поверьте мне 🙂

Двойные трубы || сохранить день!

 if ( $post_type == 'games' || 'consoles') OR { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } 

Это делает именно то, что я намеревался сделать!

Редактировать: or также работает вместо двойной трубы. Ты узнаешь что-то новое каждый день!

 $query->set('post_type', array( 'post', 'movie' ) ); 

Или другие примеры вы можете увидеть здесь: http://devotepress.com/wordpress-coding/when-to-use-pre_get_posts-in-wordpress/