前の/次のブログページへのリンクを取得するには、現在次の方法を使用します。
<?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
は、リンクURI自体を取得するためにprevious_posts
を呼び出します。
<?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 = __( '« Previous Page' );
if ( !is_single() && $paged > 1 ) {
$attr = apply_filters( 'previous_posts_link_attributes', '' );
return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&$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は関数が1つのことしかしないことを確認するのが得意です。より広い関数(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と似ていますが、投稿の1つだけを取得しています
$prev_post = get_previous_post();
empty($prev_post) or $link = $prev_post->guid;
私はこれでうまくいくはずだと思うが、テストはしていない。