Home > wordpress > [WP]Wordpressテンプレートカスタマイズ用小技メモ(2)

[WP]Wordpressテンプレートカスタマイズ用小技メモ(2)

テンプレートカスタマイズに使えそうなソースをつらつらとまた書き散らす。その1はこちら
今回はテクニカルなものが多いかもしれない。

グローバルメニュー的なもの

ページとかカテゴリー単体にリンクしたい場合には、get_category_link()及びget_permalink()を使う。
引数はそれぞれカテゴリーIDとページIDです。

PHP:
  1. <ul id="glovalnavi">
  2.     <li><a href="<?php echo get_option('home'); ?>" rel="index" title="<?php _e('Go to site top.'); ?>">HOME</a></li>
  3.     <li><a href="<?php echo get_category_link(1);?> " rel="category" title="<?php _e('View all posts in Event information.'); ?>">イベント情報</a></li>
  4.     <li><a href="<?php echo get_permalink(1); ?> " rel="page" title="<?php _e('Sample Page.'); ?>">ページ</a></li>   
  5. </ul>

パンくずリンクぽいもの

single.phpとかにHOMEとカテゴリと記事タイトルのリンクを出すだけで作れます。
ループ内に以下のソースを入れる。

PHP:
  1. <p><a href="<?php bloginfo('home'); ?>" title="<?php _e('Home'); ?>"><?php _e('Home'); ?></a>&gt; <?php the_category(' | ') ?>&gt; <span><?php the_title(); ?></span></p>

もっと実用的にタイトルと連動させるならこの記事の関数が便利だと思う。

指定したサイズでサムネイル画像を表示する

投稿記事にアップロードされた画像を取得する手法はこの記事とかこの記事で書いてるので、
応用して指定したサイズで表示出来るようにしてみます。
まず、media.php内にconstrain_dimensions()という関数があるので、
これをfunction.phpにまるっとコピペする。

次に、以下の関数をfunctions.phpに追加。

PHP:
  1. function get_postimg_thumb($postid,$max_width,$max_height) {
  2.         $attachments = get_children(array('post_parent' => $postid, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
  3.     if(!empty($attachments)){
  4.         $attachment = array_shift($attachments);
  5.         $image =  image_downsize(intval($attachment->ID));
  6.         list($src, $current_width, $current_height) = $image;
  7.         $size = constrain_dimensions( $current_width, $current_height, $max_width, $max_height );
  8.        
  9.         $hwstring = image_hwstring($size[0], $size[1]);
  10.         return '<img src="'.attribute_escape($src).'" '.$hwstring.' /></a>';
  11.     }else{
  12.         return false;
  13.     }
  14. }

index.php等のループ内に次のように書きます。

PHP:
  1. $img = get_postimg_thumb(get_the_ID(),130,130);
  2. if(isset($img)){print $img;}

引数に記事IDと縦横の上限を指定すると、画像タグのサイズを上限の数値に修正して出力します。
get_postimg_thumb($postID,$MaxWidth,$MaxHeight)

自動でストライプに

記事IDやコメントIDを2で割って余剰で判定。

PHP:
  1. $class = ($comment->ID % 2) ? 'odd' : 'even';
  2. print "<div class=\"$class\">";

検索結果から特定のカテゴリと記事の除外

search.phpもしくはis_search()以下のループ前に、query_postsでcategory__not_inとpost__not_inを使用する。
指定はIDで、複数指定する場合は配列形式になります

PHP:
  1. query_posts(array('category__not_in' => array(1,2),'post__not_in' => array(1,2,3)));
  2. if (have_posts()) :

タグのセレクトメニュー化

single.phpとか

PHP:
  1. <form method="get"><p>
  2. <?php
  3. print "<select name=\"tag\">";
  4. $posttags = get_the_tags();
  5. if ($posttags) {
  6.     foreach($posttags as $tag) {
  7.         print "<option value=\"".$tag->slug."\">".$tag->name."</option>";
  8.     }
  9. }
  10. print "</select>";
  11. ?><input type="submit" value="GO" /></p></form>

カテゴリータイトルを画像にする

カテゴリーごとにタイトル画像作るとif文が延々続いたりするので、その手間を省くためのサンプルです。

まずカテゴリーのタイトル画像を作成する。
サイズは固定で、ファイルの名前をカテゴリーIDを含む連番にします。たとえば「category_title-15.jpg」など

function.phpに以下をコピペ。

PHP:
  1. function getCategoryTitleImg(){
  2.     global $wp_query;
  3.     $imgusecat =array('17','15','20');//タイトル画像表示するカテゴリID
  4.     $getcategory = $wp_query->get_queried_object();
  5.     if(array_search($getcategory->cat_ID,$imgusecat)!==false){
  6.         return "category_title-".$getcategory->cat_ID.".jpg";
  7.     }else{
  8.         return false;
  9.     }
  10. }

この関数では画像のURLだけ返します。
$imgusecatの配列内に、タイトル画像を表示したいカテゴリIDを突っ込んでおく。

テンプレートファイルの画像表示したいところに、次のように書く。(ループ外)

PHP:
  1. <?php $imgsrc = getCategoryTitleImg();
  2. if($imgsrc!==false):?>
  3. <h1 class="category-title"><img src="<?php bloginfo("template_directory")?>/images/<?php print $imgsrc; ?>" width="500" height="100" alt="<?php single_cat_title(); ?>" /></h1>
  4. <?php else: ?>
  5. <h1 class="category-title"><?php single_cat_title(); ?></h1>
  6. <?php endif; ?>

GalleryのCSSを削除する

Wordpressのショートコードで表示できるGalleryのCSSは何故かbodyに入るので、これを追加させずにテーマのCSSで書くようにするソース。

PHP:
  1. function gallery_removecss($css){
  2.     return '<div class=\'gallery\'>';
  3. }
  4. add_filter('gallery_style', 'gallery_removecss');

headに移動させるなら以下を追加。

PHP:
  1. function gallery_addcss(){
  2.     echo '<style type=\'text/css\'>
  3.             .gallery {
  4.                 margin: auto;
  5.             }
  6.             .gallery-item {
  7.                 float: left;
  8.                 margin-top: 10px;
  9.                 text-align: center;
  10.                 width: 33%;
  11.             }
  12.             .gallery img {
  13.                 border: 2px solid #cfcfcf;
  14.             }
  15.             .gallery-caption {
  16.                 margin-left: 0;
  17.             }
  18.         </style>';
  19. }
  20. add_action('wp_head','gallery_addcss');

linkタグにして外部CSS化しても良い。

今更感漂うおまけ

XML宣言

PHPで先頭に入れるとエラーになるので、echoやprintを使う必要があります。

PHP:
  1. <?php echo '<?xml version="1.0" encoding="UTF-8"?>'."n"?>

IE用のif文

bloginfo('template_directory');で、アクティブなテーマのディレクトリまでのパスが出力されるので、それ使うだけ。

PHP:
  1. <!--[if IE]>
  2. <link rel="stylesheet" type="text/css" media="screen" href="<?php bloginfo('template_directory'); ?>/iefilter.css" />
  3. <![endif]-->
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

Comments:0

Comment Form
Remember personal info

Trackbacks:2

Trackback URL for this entry
http://tenderfeel.xsrv.jp/wordpress/253/trackback/
Listed below are links to weblogs that reference
[WP]Wordpressテンプレートカスタマイズ用小技メモ(2) from WebTecNote
pingback from 2010/03/30に気になったこと | debeso 10-03-31 (水) 0:08

[...] [WP]Wordpressテンプレートカスタマイズ用小技メモ(2) – WebTecNote WPでテンプレート作成時にみておくもの [...]

pingback from mode-n » ギャラリー機能のカスタマイズ 10-11-08 (月) 16:53

[...] です、いろいろ迷っていたのですけど、「 WebTecNote 様」から拝借させていただきました。 [...]

Home > wordpress > [WP]Wordpressテンプレートカスタマイズ用小技メモ(2)

最近の投稿
最近の修正
  • そしてこのSQLはわれながらよく書いたと思う 2010-11-15
  • CSVの列っていう方がいいのかな…118項目だった 2010-11-15
  • 楽天のCSVの項目が116個もあった衝撃 2010-11-15
  • オフィスで香水臭振りまくのは迷惑だと知れ 2010-11-15
  • ぐあー フレグランステロやー 2010-11-15
  • More updates...

Powered by Twitter Tools

Tag Cloud
おすすめサーバー・他
メタ情報

Return to page top