Intereting Posts
Измените параметр администратора «Default Avatar» с помощью функции functions.php Пользовательские сообщения типа Post, которые не отображаются в категории Как получить значение meta на основе последнего идентификатора сообщения с именем группы по названию Сортировка сообщений по сообщениям и рассмотрение мета-ключа Новый фильтр пользователя Добавление настраиваемого типа сообщения в цикл Пользовательский виджет заголовка / кодировка HTML Определение настраиваемого шаблона страницы без собственного .php-файла Установленный вручную плагин не отображается Как добавить класс в ссылки внутри текста сообщений как удалить категорию из базы данных Есть ли опция или константа wp-config.php, которую я могу настроить, чтобы позволить мне загружать ночные / бета-сборки? Когда следует использовать wp_register_script () с помощью wp_enqueue_script () и просто wp_enqueue_script ()? Заменить домен в базе данных Проблема создания пользовательской страницы категории с разбиением на страницы

Получите только ссылки на предыдущую / следующую страницу (не заголовок, <a> и т. Д.)

В настоящее время я использую следующий метод, чтобы получить ссылку на предыдущую / следующую страницу блога:

<?php previous_post_link( '%link', '%title' ); ?> 

Однако это включает в себя внешний элемент, имя и т. Д., Я хочу только ссылку, например http://domain.com/blog/page/2

Есть ли функция, которую я не вижу в соответствии с моими требованиями?

осветление

  • Это для следующей страницы блога (не в блоге)
  • Мне нужна ссылка, а не элемент привязки

Большое спасибо

Короткий ответ: get_previous_posts_page_link – это функция, которую вы хотите:

 <?php if($url = get_previous_posts_page_link()): ?> do stuff with $url <?php endif; ?> 

Более длинный ответ: следуйте коду.

previous_posts_link вызывает get_previous_posts_link .

 <?php /** * Display the previous posts page link. * * @since 0.71 * @uses get_previous_posts_link() * * @param string $label Optional. Previous page link text. */ function previous_posts_link( $label = null ) { echo get_previous_posts_link( $label ); } 

get_previous_posts_link вызывает previous_posts для извлечения самого URI ссылки.

 <?php /** * Return the previous posts page link. * * @since 2.7.0 * * @param string $label Optional. Previous page link text. * @return string|null */ function get_previous_posts_link( $label = null ) { global $paged; if ( null === $label ) $label = __( '&laquo; Previous Page' ); if ( !is_single() && $paged > 1 ) { $attr = apply_filters( 'previous_posts_link_attributes', '' ); return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![az]{1,8};)/i', '&#038;$1', $label ) .'</a>'; } } 

previous_posts – это всего лишь небольшая оболочка вокруг функции, которую вы ищете: get_previous_posts_page_link

 <?php /** * Display or return the previous posts page link. * * @since 0.71 * * @param boolean $echo Optional. Echo or return; */ function previous_posts( $echo = true ) { $output = esc_url( get_previous_posts_page_link() ); if ( $echo ) echo $output; else return $output; } 

Функция, которую мы хотим:

 <?php /** * Retrieve previous posts page link. * * Will only return string, if not on a single page or post. * * Backported to 2.0.10 from 2.1.3. * * @since 2.0.10 * * @return string|null */ function get_previous_posts_page_link() { global $paged; if ( !is_single() ) { $nextpage = intval($paged) - 1; if ( $nextpage < 1 ) $nextpage = 1; return get_pagenum_link($nextpage); } } 

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

 shell$ cd /path/to/your/wordpress/install shell$ ack "function previous_posts_link" 

В общем, WordPress очень хорош в том, что функция выполняет только одну вещь. Отслеживание из более широких функций (ala previous_posts_link и других тегов шаблонов) назад к более основным функциям – это, как правило, хороший способ узнать какой-нибудь классный материал и найти ответ.

 <?php get_previous_posts_link(); ?> 

Очевидно, вы храните это в массиве, например

 <?php $prev = get_previous_posts_link(); ?> 

Если вам не нужны другие элементы, вы можете добавить следующий код к шаблону страницы своей темы. Затем вам будут назначены ссылки $ prevID и $ nextID, с которыми вы сможете делать то, что вам нравится.

 <?php $pagelist = get_pages('sort_column=menu_order&sort_order=asc'); $pages = array(); foreach ($pagelist as $page) { $pages[] += $page->ID; } $current = array_search($post->ID, $pages); $prevID = $pages[$current-1]; $nextID = $pages[$current+1]; ?> 

Подобно @ liam-jay, но только получение одной из сообщений

 $prev_post = get_previous_post(); empty($prev_post) or $link = $prev_post->guid; 

Я думаю, что это должно работать нормально, непроверено.