WordPressのテンプレート
動作はタイトルと概要と「続きを読む」ボタンを記事一覧に表示して、「続きを読む」ボタンを押すと、ボタンが本文に置き換わるということをやります。
まずはテンプレートファイルを普通(?)に作成します。
一覧を表示するための「index.php」と、本文を表示するための「single.php」ですね。
index.php
<?php get_header(); ?>
<div id="entry">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="section">
<h3><?php the_title(); ?></h3>
<?php the_excerpt(); ?>
<div class="more"><a href="<?php the_permalink() ?>">続きを読む</a></div>
<!-- /.section --></div>
<?php endwhile; else: ?>
<p><?php _e('no post'); ?></p>
<?php endif; ?>
<!-- /.entry --></div>
<?php get_footer(); ?>
single.php
<?php get_header(); ?>
<div id="article">
<h2><?php the_title(); ?></h2>
<p class="date"><?php the_time('Y-m-d'); ?></p>
<div class="content">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; else: ?>
<p><?php _e('no post'); ?></p>
<?php endif; ?>
<!-- /#content --></div>
<!-- /#article --></div>
<?php get_footer(); ?>
「index.php」では特に変わったことはないと思います。いつも通り「the_permalink()」でリンクします。
「single.php」で必要なところは「content」クラスに囲まれた部分だけなのですが、他の部分も作るっておくことでjavascriptがOFFときであったり、SEO的にもよろしいのではないのかと思います。
jQueryを書くheader.php
jQueryの部分はこうです。
header.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQueryでWordpressの続きを読むをAjaxで読み込む</title>
<?php wp_enqueue_script('jquery'); ?>
<?php wp_head(); ?>
<?php if(is_home()): ?>
<script type="text/javascript">
(function($) {
$(function() {
$('.more a').click(function(event) {
//aリンクの動作を停止
event.preventDefault();
//リンク先URLを取得
var page = $(this).attr('href');
$(this).parent()
.load(page+' div.content')
.fadeOut()
.slideDown(200);
});
});
})(jQuery);
</script>
<?php endif; ?>
</head>
<body>
- 14行目
event.preventDefault() - aタグのリンクが無効(?)になって画面遷移しなくなります。
- 16行目
$(this).attr(‘href’) - aタグで指定した「href(URL)」を取得します。
- 18行目
.load(page+’ div.content’) - ここでリンク先の「div.content」の部分だけ読み込みます。
Wordpressだからといって特別なことはないですね。
これだけでは心許ないところがありますが、とりあえずシンプルな例ということで。