Intereting Posts
Показывать только родительские категории WordPress? Как сделать так, чтобы новые сообщения в определенной категории попадали на определенную страницу? Исключить html из результатов поиска (имена изображений и т. Д.)? Как напечатать значения настраиваемых полей Как обновить записи с помощью $ wpdb? Single_cat_title () печатает заголовок перед текстом Как теперь все пользователи неактивны? Изменить эскиз сообщения с помощью формы редактирования переднего конца Ограничить количество загруженных вложений определенного контекста Можете ли вы использовать систему профилей buddypress без установки всего приладки? Доступ для администратора FQDN для многостраничного доступа WordPress Как применить фильтр редактора к сообщениям с определенным пользовательским типом сообщения Мои результаты ввода не всегда в алфавитном порядке get_query_var («страница») пуст, если страница равна 1 Запланированные электронные письма для включения только сообщений и событий календаря на предстоящую неделю

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

На самом деле у меня есть проблема, связанная с тем, что я предоставляю ссылку меню (предопределенную в теме) до последнего сообщения определенного типа сообщений. Я достигаю этого с помощью следующей функции …

function get_latest_magazine_issue_url() { global $wpdb; $query = "SELECT ID FROM {$wpdb->prefix}posts WHERE post_type='magazine_issue' AND post_status='publish' ORDER BY post_date DESC LIMIT 1;"; $result = $wpdb->get_results($query); if(is_object($result[0])) { return get_permalink($result[0]->ID); } else { return ''; }; } 

… отлично до этого момента, но я узнал, что, когда я щелкнул по этой ссылке после добавления нового сообщения cpt, ссылка все равно захватит сообщение, которое было последним, когда я реализовал эту ссылку через виджет. Есть ли способ обойти это без вызова flush_rewrite_rules ()? Я не хотел бы скрывать это, потому что codex говорит: http://codex.wordpress.org/Function_Reference/flush_rewrite_rules

Solutions Collecting From Web of "Как решить эту проблему, не смывая правила перезаписи для каждого запроса на отправку посетителей?"

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

Сначала: создайте новую страницу, скажем: «Последнее сообщение» – отметьте его идентификатор.

И добавьте это в свои функции. Php:

 function binda_redirect_to_latest( $query ) { $page_id = 234; //ID of your page with Latest post if ( $query->is_page( $page_id ) && $query->is_main_query() ) { $args = array( 'numberposts' => 1, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'magazine_issue', 'post_status' => 'publish' ); $latest_post = get_posts( $args ); foreach( $latest_post as $p ){ $query->set( 'p', $p->ID ); $query->set( 'page_id', '' ); } } return $query; } add_action( 'pre_get_posts', 'binda_redirect_to_rand' ); 

Вуаля

Если вы не хотите создавать дополнительную страницу, вы можете зарегистрировать новую переменную запроса и chceck для ее присутствия в pre_get_posts hook. Сюда:

 add_filter( 'query_vars', 'my_query_vars' ); function my_query_vars( $vars ) { $vars[] = 'latest_post'; return $vars; } 

Модифицированный обратный вызов hook_posts:

 function binda_redirect_to_latest( $query ) { if ( $query->is_home() && isset($query->query_vars['latest_post']) && $query->query_vars['latest_post'] == 1 && $query->is_main_query() ) { $args = array( 'numberposts' => 1, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'magazine_issue', 'post_status' => 'publish' ); $latest_post = get_posts( $args ); foreach( $latest_post as $p ){ $query->set( 'p', $p->ID ); } } return $query; } add_action( 'pre_get_posts', 'binda_redirect_to_rand' ); 

Чтобы создать линг, вы добавляете_query_arg:

 echo add_query_arg( 'latest_post', 1, get_bloginfo('url') );