WordPressで前後ページにリンクを張る方法

WordPressを使っていて、前後のページへのナビゲーションに困ったことはありませんか?PPT2Flashのページに埋め込みたかったのですが、なかなかよいプラグインが見つからなかったので、自作しちゃいました。前回プラグインを作成したエントリーリストつくーるでは、add_shortcodeを知らなかったので、str_replaceで強引にタグ置換してましたが、今回はadd_shortcodeつかって、それっぽく、仕上げてみました。

add_shortcodeを使えば、簡単にタグを作れることがわかったのが収穫です。ほしい機能がみつからなくても、簡単にプラグインが作れる。それがWordpressのいいところですね。

使用例

ppt2flash

ppt2flash

プラグインのダウンロード: prev_next

プログラム概要

  • get_prev_next
    現在のページの前後のインデックスを確認し、あればそのページを、なければfalseを返します。
  • short_code_next
    [ prev-page ]を置換するためのHTMLを生成。
  • short_code_prev
    [ next-page ]を置換するためのHTMLを生成。
  • prev_next_prepender
    [ prev-page ][ next-page ]を、記事の先頭に付加します。

ソースコード

<?php
/*
Plugin Name: prev_next
Plugin URI: http://blog.elearning.co.jp
Description: Link to the previous page and the next page
Version: 1
Author: y.nishimura
Author URI: http://blog.elearning.co.jp
*/

/**
* this function returns previous page and next page
* if not exist, return false.
*/
function get_prev_next(){
static $pageArray; // for performance enhancement
if(!isset($pageArray))$pageArray = get_pages(‘sort_column=menu_order,post_title’);
foreach($pageArray as $page)$idArray[] = $page->ID;
$pos = array_search(get_the_ID(), $idArray);
$ret[‘prev’] = isset($pageArray[$pos – 1]) ? $pageArray[$pos – 1] : false;
$ret[‘next’] = isset($pageArray[$pos + 1]) ? $pageArray[$pos + 1] : false;
return $ret;
}

/* define shortcode [prev-page] and [next-page] */
function short_code_next(){
$prev_next = get_prev_next();
$next = $prev_next[‘next’];
if($next)return ‘<a href=”‘.get_page_link($next->ID).'”>’.htmlentities($next->post_title, ENT_QUOTES, ‘utf-8′).’ »</a>’;
}
function short_code_prev(){
$prev_next = get_prev_next();
$prev = $prev_next[‘prev’];
if($prev)return ‘<a href=”‘.get_page_link($prev->ID).'”>« ‘.htmlentities($prev->post_title, ENT_QUOTES, ‘utf-8′).'</a>’;
}
add_shortcode(‘prev-page’, ‘short_code_prev’);
add_shortcode(‘next-page’, ‘short_code_next’);

/* prepend link-unit to the “pages” (not to posts)  */
function prev_next_prepender($content) {
if(is_page())$content = ‘<div><div style=”float:left”>[ prev-page ]</div> <div style=”float:right”>[ next-page ]</div></div><br/>’.$content;
return $content;
}
add_filter ( “the_content”, ‘prev_next_prepender’);
?>

Facebookページもよろしくお願いします

CATEGORIES WordPressby.a.takeuchi5 Comments2009.11.05
記事の投稿者
a.takeuchi a

Facebook comments:

コメントをどうぞ

Eメールアドレスは公開されません。

Trackback URL

管理者の承認後に表示します。無関係な内容や、リンクだけで意見や感想のないものは承認しません。

  • 製品・サービス
    PC、iPhone対応のeラーニングシステム。20名まで無料でASPサービスを利用できます
    PC、iPhone対応のeラーニング学習管理システム(LMS)【SmartBrain】
    http://smartbrain.info/
    PC、iPhone対応のeラーニングシステム。ユーザ数無制限のASPコースをご用意。


    eラーニングポータルサイト【elearning.co.jp】
    http://elearning.co.jp/
    eラーニング専門企業(株)キバンインターナショナルの製品を紹介しています。


    コンテンツビジネス支援パック
    http://contentsbank.jp/

    Ustream配信、動画コンテンツ制作、セミナーにご利用いただけるレンタルスタジオ
    Ustreamレンタルスタジオ「パンダスタジオ」
    http://pandastudio.tv/

    eラーニング専門企業(株)キバンインターナショナルのスタッフが、eラーニングに関する情報・最新事情をBlogでご紹介。月50本程度の情報発信を行っています。
    ブログ「blog.eラーニング.co.jp」
    http://blog.elearning.co.jp/

  • アーカイブ
  • カテゴリー
  • Amazon
  • タグ