WordPressをちょちょいと使いやすくする15のスニペット
Post on:2009年2月17日
WordPressの各エントリーに編集ボタンを付けたり、シングルクォートの自動置換を無効化するなど、使いやすくするための15のスニペットをForTheLoseから紹介します。
15 Useful WordPress Tricks to Make Your Theme Even Better
古いエントリーのコメント入力をクローズ
古いエントリーにはスパムコメントがつくので、コメント入力をクローズにします。
function.phpに下記を記述します(例:1ヵ月以上前)。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<textarea name="code" class="html" cols="60" rows="5"> <?php function close_comments( $posts ) { if ( !is_single() ) { return $posts; } if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) { $posts[0]->comment_status = 'closed'; $posts[0]->ping_status = 'closed'; } return $posts; } add_filter( 'the_posts', 'close_comments' ); ?> </textarea> |
コピーライトの年号を自動更新
「©2007-2009 coliss」のような年号表記を手作業で更新するのではなく、最新の年号をサーバーから取得します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> © 2007-<?php echo date('Y'); ?> coliss </textarea> |
コメントで使用できるタグ一覧の表示
コメントで使用できるHTMLのタグ一覧を表示します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> 使用できるタグ一覧: <?php echo allowed_tags(); ?>. </textarea> |
それぞれのエントリーに「編集」リンクを表示
エントリーをすぐに修正できるように、各エントリーに「編集」リンクを設置します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> <?php edit_post_link('Edit', ''); ?> </textarea> |
本文のシングルクォートの自動置換を無効化
本文内のシングルクォートや連続ハイフンの自動置換を無効にします。
function.phpに下記を記述します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> <?php remove_filter('the_content', 'wptexturize'); ?> </textarea> |
コメントのシングルクォートの自動置換を無効化
コメント内のシングルクォートや連続ハイフンの自動置換を無効にします。
function.phpに下記を記述します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> <?php remove_filter('comment_text', 'wptexturize'); ?> </textarea> |
特定のページを検索エンジンから制御
カテゴリページなど特定のページを検索エンジンのロボットから制御します。
header.phpに下記を記述します。
1 2 3 4 5 |
<textarea name="code" class="html" cols="60" rows="5"> <?php if ( is_category('4') || in_category('4') ) { echo '<meta name="robots" content="noindex">'; } </textarea> |
エントリーの合計数を表示
今までのエントリーの合計数を表示します。
1 2 3 4 5 6 7 |
<textarea name="code" class="html" cols="60" rows="5"> <?php $numposts = $wpdb->get_var("SELECT count(*) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post'"); if (0 < $numposts) $numposts = number_format($numposts); echo $numposts.' posts.'; ?> </textarea> |
エントリーに「Tweet This」リンクを表示
各エントリーに「Tweet This」リンクを設置します。
single.phpのループ内に下記を記述します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> <a href="http://twitter.com/home?status=I just read <?php the_permalink(); ?>" title="Send this page to Twitter!" target="_blank">Tweet This!</a> </textarea> |
スケジュールエントリーの表示
予定しているスケジュールエントリーを表示します。
1 2 3 4 5 6 7 8 9 10 |
<textarea name="code" class="html" cols="60" rows="5"> <?php $my_query = new WP_Query('post_status=future&order=DESC&showposts=5'); if ($my_query->have_posts()) { while ($my_query->have_posts()) : $my_query->the_post(); ?> <?php the_title(); ?> <?php endwhile; } ?> </textarea> |
特定のカテゴリを非表示
特定のカテゴリを非表示にします。
ループ内にカテゴリナンバーを指定して記述します(例は3)。
1 2 3 4 5 |
<textarea name="code" class="html" cols="60" rows="5"> <?php if ( have_posts() ) : query_posts($query_string .'&cat=-3'); while ( have_posts() ) : the_post(); ?> </textarea> |
各エントリーにユニークなIDを付加
それぞれのエントリーにユニークなIDを付加します。
1 2 3 4 5 |
<textarea name="code" class="html" cols="60" rows="5"> <div class="post-container" id="post-<?php the_ID(); ?>"> <!-- Post Content --> </div> </textarea> |
各コメントにユニークなIDを付加
それぞれのコメントにユニークなIDを付加します。
1 2 3 4 5 |
<textarea name="code" class="html" cols="60" rows="5"> <div class="comment-container" id="comment-<?php comment_ID() ?>"> <!-- Comment Content --> </div> </textarea> |
コメントとトラックバックを分離
コメントとトラックバック(Trackback/Pingback)を分離します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<textarea name="code" class="html" cols="60" rows="5"> <?php if ( $comments ) : ?> <?php foreach ($comments as $comment) : ?> <?php $comment_type = get_comment_type(); ?> <?php if($comment_type == 'comment') { ?> <!-- It's a comment --> <!-- Comment content goes here --> <?php } else { $trackback = true; }?> <?php endforeach; ?> <?php if ($trackback == true) { ?> <!-- It's a trackback --> <ol id="trackbacks-ol"> <?php foreach ($comments as $comment) : ?> <?php $comment_type = get_comment_type(); ?> <?php if($comment_type != 'comment') { ?> <li> <?php comment_author_link() ?> </li> <?php } ?> <?php endforeach; ?> </ol> <?php } ?> <?php else : ?> <?php endif; ?> </textarea> |
ページネーションを設置
使用しているテーマファイルに、「次へ」「前へ」のようなページネーションを設置します。
- プラグイン「WP-PageNavi」をダウンロードします。
- ダウンロードしたファイルから、「wp-pagenavi.php」と「pagenavi-css.css」をテーマディレクトリに格納します。
- テーマファイルのコードを修正します。
変更前
1 2 3 4 |
<textarea name="code" class="html" cols="60" rows="5"> <?php next_posts_link('Previous entries') ?> <?php previous_posts_link('Next entries') ?> </textarea> |
変更後
1 2 3 4 5 6 |
<textarea name="code" class="html" cols="60" rows="5"> <?php include('wp-pagenavi.php'); if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?> </textarea> |
- 「wp-pagenavi.php」を修正します。
変更前
ver.2.40の場合、L.61
1 2 3 4 |
<textarea name="code" class="html" cols="60" rows="5"> function wp_pagenavi($before = '', $after = '') { global $wpdb, $wp_query; </textarea> |
変更後
1 2 3 4 5 |
<textarea name="code" class="html" cols="60" rows="5"> function wp_pagenavi($before = '', $after = '') { global $wpdb, $wp_query; pagenavi_init(); //Calling the pagenavi_init() function </textarea> |
- 最後の修正です。
「header.php」のhead内に、下記を記述します。
1 2 3 |
<textarea name="code" class="html" cols="60" rows="5"> <link rel="stylesheet" href="<?php bloginfo('template_url');?>/pagenavi.css>" type="text/css" media="screen" /> </textarea> |
sponsors