[wp] カスタムフィールドで期限日を設定してカウントダウンタイマーを表示

「WordPressで投稿した記事に別途期限日を設定して、その期限日までのカウントダウンタイマーを表示したい」ってな用途に。
晒してるソースはMooToolだけどロジック応用すれば他のフレームワークでも出来るんじゃないかな。

完成形

期限日つきの記事を投稿するカテゴリーを作る。サンプルでは「未分類」の名前を変更してNewsカテゴリとして使用。

WordPressでカウントダウンの表示

投稿サムネイルと共に「○○まであと■■日▲▲時間★★分◆◆秒」と表示する。
時間はJavaScriptでリアルタイムにカウントダウンさせる。

更新されない可能性を考慮して、設定期限を過ぎた場合は過去形にしておくことにした。(javascriptで)

期限を越えた場合の表示

期限越えたとき表示する文字列の設定も出来るようにしておく。

文字列設定

続きを読む

[WP]投稿サムネイルを記事へのリンクやタイトル付きで表示

以前書いた画像サムネイルを投稿された記事へのリンク付きで表示はギャラリーにある画像を表示するものなのだけど、
Wordpress2.9には投稿サムネイルっていう便利機能が備わっているんだよね。
そろそろ投稿サムネイル使う関数に書き直さねば…と思っていたらフォーラムにそんな感じの質問が投稿されていたのでw さらっと書いてみた。
関数はループ外の使用が有効なので、トップに更新情報を出すもよし、サイドバーに表示するもよしです。

サンプル実行デモ

HTML

仕様上リスト要素しか出力されないんで、タイトルとか適当につけてください。

<h3>新着記事</h3>
<div id="newposts">
	<?php postthumb_ancherlinks('category=16,15');?>
</div>

CSS

デフォルトテーマに書いた超適当なソースだけど以下ポイント。

画像がない場合はnoimageというクラスがli要素に付くので、[No Image]画像を背景として指定。
サムネイルのサイズと同じpaddingとwidthを指定して整える。
サムネイルとタイトルの間には改行が入らないので、サムネイルかタイトルをブロック要素にして改行。

#newposts ul {
padding:0;
}
#newposts li {
list-style:none outside;
padding:0;
display:inline-block;
text-align:center;
}
#newposts li img {
display:block;
}

#newposts li.noimage {
background:url(images/noimage.png) no-repeat top center;
padding-top:100px;
width:100px;
}

続きを読む

[wp] 投稿サムネイルに記事やフル画像へのリンクを張る

WordPressに新しく実装された投稿サムネイル用のタグthe_post_thumbnail()は出力されるのが画像だけなんだけど、
これにページへのリンクとか拡大画像とかのリンクをつけたいと思うことがあったので関数作った。

構文

 the_linked_post_thumbnail($size = 'medium', $linkto = 'image', $attr = NULL) 

$size
画像のサイズ。文字列(thumbnail, medium, large, full)か配列( array(32,32) )で。

$linkto
リンク先。image=フルサイズの画像url、page=投稿記事、NULL=リンクしない

$attr
画像の属性。連想配列形式で指定する

$default_attr = array(
			'class'	=> "zoom",
			'title'	=> 'クリックで拡大',
		);

続きを読む

[wp] ページタイトルとパンくずリンクを統一する

ページタイトルとかパンくずナビとかがリンクしてないのが気持ち悪かったので、
WordPressのタイトル周りの統一感を出す関数を作ってみたYO。

シングルページ

タイトルだと「ページタイトル » カテゴリー等 | サイト名」 になり、
パンくずでは「ホーム > カテゴリー等 > ページタイトル」になる。記号はお好みで変更可。
$localから始まるグローバル変数はテンプレートページ内のどこでも使用出来る。

続きを読む

[wp]投稿された画像のサムネイルが表示される記事一覧ページを作る

以前書いた記事 [WP]画像サムネイルを投稿された記事へのリンク付きで表示 の応用編です。
ページテンプレートをちょっと弄って、画像のサムネイルがずらっと並ぶ一覧ページを作る方法について解説します。

Sample

表示するのは、記事に投稿された画像(のサムネイル)・記事タイトル・カテゴリー名、の3つとします。
記事に関連付けられていない画像(ライブラリから引っ張った画像)は表示されません。
※上記のサンプル画像のwordpressでは、サムネイルの最小サイズを100x100pxの切り抜き設定にして、それを表示しています。

※記事のギャラリーに投稿された画像のサムネイルを利用するもので、
2.9で実装された投稿サムネイル機能とは全く別物です。ご注意ください。

続きを読む

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

テンプレートカスタマイズするときに使えそうなソースをつらつら書き散らすよ!(その1その2
自作関数ネタが多いです。

METAタグのgeneratorを消す

デフォルトだとheadにwordpressが自動でgeneratorを追加しますが

<meta name="generator" content="WordPress 2.7" />

meta name=”generator”はセキュリティ的に入れない方がいいと言われてます。
これ入ってるとバージョンアップサボってるのもモロバレ。(ex:このブログ)

アクティブテーマのfunctions.phpに以下1行追加

remove_action('wp_head', 'wp_generator');

remove_action()関数は必要のない動作を一発で消す事が出来るので覚えとくと便利。

keyで指定したカスタムフィールドの値を取得する

プラグイン使わなくても一応出来るよ。ってことで。

functions.php

function getCustom($key,$id) {
	$custom = get_post_custom_values($key, $id);
	if(count($custom)!=1)
		return implode("<br />",$custom);
	else
		return $custom[0];
}

値が複数ある場合は改行でくっつけてから帰します。

テンプレートファイルのループ内

print getCustom("key",get_the_ID());

the_ID()使うならループ内、変数とかに入れておけばループ外でもいける。
直接テンプレートファイル内に関数の部分入れて処理しても良い。

続きを読む

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

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

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

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

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

パンくずリンクぽいもの

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

<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>

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

続きを読む

[WP]カスタムフィールドの値で記事を並び替える

質問された、カスタムフィールドで設定した値で記事を並び替えて表示するサンプルを晒してみる。
オススメ度とかでランキングっぽいことしたい時に使えるのか・・・な?
やってることはarray_multisortによる多次元配列のソートです。

サンプル関数の使い方は次の通りです。

  1. 記事にソート用のカスタムフィールドを作成
  2. 10進数の半角数字で値を入力
  3. テンプレートの表示したいところにサンプルのコードを入れる

以上。
サンプルソースは用途に応じて適当に変更するといいと思います。

参考ページ

追加

  1. 他のカスタムフィールドも表示したい場合
  2. ページナビゲーションによる分割表示

続きを読む

[WP]オリジナルテーマ作成方法いろは(参)::index.php

WordPressオリジナルテーマ作成について語ってみるテスト、からの続き。
今回はindex.phpの作成編。

▼前回までの作成状況
themes_making2-3

とりあえずindex.phpで記事表示するところまで作ることにします。
トップページ的な役割をするものなので、single.phpと若干作りが違います。

続きを読む

[WP]オリジナルテーマ作成方法いろは(弐)::functionsとsidebar

WordPressオリジナルテーマ作成について語ってみるテスト、からの続き。
今回はfunctions.phpとsidebar.php作成編。

▼前回までの作成状況
themes_making2 ここまでの作成状況

functions.phpは配布されたテーマそのまま使う分には特別必要ってワケじゃないんですが、
テーマ作るとなると避けて通れないものであります。特にsidebarとは切れない関係。

前回ではfunctions.phpは作っていないので、
とりあえず新しいphpファイルを用意して名前をfunctionsにして保存しといてください。

続きを読む

[WP]オリジナルテーマ作成方法いろは(壱)

wordpressのオリジナルテーマ作成について語ってみるテスト。
ブログっぽいWebサイトテンプレートを作ったので、これを利用して作る方法を追う。
同タイトルの連番シリーズになっています。合言葉は「欲しいテーマが無いなら作ればいいじゃない!」
この記事は配布テンプレダウンロードからheader.phpとfooter.php作成まで。

全体で出てくる主な内容

  • アーカイブページとシングルページのレイアウト変更(3カラムと2カラム分岐)
  • 自作テンプレ・CSSファイル呼び出し
  • サイドバーウィジェット関連
  • FLASHの表示
  • ループについての解説

用意するもの

  • UTF-8が扱えるエディタ(PHPとHTMLの色分け表示できると見やすい)
  • WordPress本体(ローカル環境が望ましい)
  • XHTML/CSSテンプレート(なんでもいい)

テーマのテンプレートファイル構造がいまいちよく分からないという方は
事前にテンプレートファイルの仕様と構成を見ておくと分かりやすくなるとおもいます。
ファイルの編集は一応wordpressのテーマエディタでも出来なくはないです。

注意

  1. 対象バージョンは2.5~2.6です。下位バージョン対策も一応します。
  2. 手順はすごく・・・俺流です
  3. サンプルデザインをそのまま使うならコピーライト消しちゃダメ
  4. 貼ってあるソースそのまま使うとエラーになるかも(全角混入注意報)
  5. 途中レイアウト崩壊したらXHTMLソースをチェックしよう

続きを読む

[WP]画像サムネイルを投稿された記事へのリンク付きで表示

記事で使われた画像を使って、記事へのリンクをテンプレート、またはサイドバー内に表示する方法について。
ver2.7でも動きます。

ver2.9の投稿サムネイル機能を使う関数はこちらにあります

使うとこんな感じになる▼
attachment_ancherlinks sample

以前書いた画像のサムネイル表示(ループ内)の応用です。
この記事の関数は特定のカテゴリ下にある画像に絞っています。
全てのカテゴリーに対応したい場合はこちらの記事をご覧下さい。

続きを読む

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

テンプレートファイルのカスタマイズで使えそうなソースのサンプルをつらつらと書き散らしてみる。その2はこちら。

タイトルの文字数制限

一定数以上のタイトルを省略(抜粋)する。
下記サンプルだと10文字まで拾って以下を三点リーダにしています

<?php 
	$title= mb_substr($post->post_title,0,10);
	echo '<h1>'.$title.'…</h1>';
?>

続きを読む

[WP]テンプレートファイルの仕様と構成

テンプレートファイルの役割やら構成なんかについてのまとめ。そこそこ初心者向け。

WordPressテーマ概要

WordPressのデザインはテーマと呼ばれてます。テーマを構成するファイル群がテンプレートファイルです。
他のブログのようにテーマをテンプレートと呼んでも通じるけど、検索するときはテーマ(Theme)を使う方が良いかも。

ダウンロードしたばかりだと”Classic” と “Default”の2つがプリインストールされてますが、
テーマ新しく追加する場合は、ダウンロードして解凍したテーマのフォルダをWordpressのwp-content/themes/にアップロードするだけ。
デザイン(表示)に並ぶテーマのスクリーンショットをクリックすれば即座に変更されます。
テーマ変更で再構築が必要ない、というのがWordpressの良いところ。

WordPressは1.x系、2.0.x系、2.1.x系、2.2以降と2.5以上では内部仕様が違ってるので、テーマやプラグインはバージョンにあったものを選ばないとエラーが出たりするので注意。
特に2.7は最新とあって対応してるテーマやプラグインもまだ少ないようです。
公式のリスト»
WordPress 2.7 Theme Compatibility List
WordPress 2.7 Plugin Compatibility List
ver2.5→ver2.7に修正

WordPressはコアファイル・プラグイン等全てPHPなので、PHPとmySQLに通じていればかなり色々なことができます。
テーマを構成するテンプレートファイルは、XHTMLとPHPのテンプレートタグで作成されてます。
XHTMLとUTF-8で記述するのがベターですが、HTMLでも文字コードさえ合ってれば問題はないです。
文字コードはWordpress2.5ではUTF-8のみになりました。
テキストエディタはBOM無しのUTF-8で保存できるものを選ぶ必要があります。(メモ帳はダメ!絶対)

テンプレートに記述するWordpress独自のPHPコードはテンプレートタグの他、ループファンクションなどかなり色々使えます。
PHPの関数や変数なんかも使えます。

続きを読む

[WP]WordPress2.5-2.6 フルサイズの横幅を500px以上にする

WordPress2.5~2.6のメディアアップロードでは画像のサムネイルサイズに小・中と2種類増えたことで、
フルサイズを含めて3種類になったわけだが、フルサイズで画像を投稿に挿入したとき何もしてないと
横幅の最大が500pxで固定されてしまうことがある。

500px以上にしたい場合は、アクティブなテーマのfunction.phpに次のコードを記述する。

$GLOBALS['content_width'] = 800;

画像でレイアウトを崩されたくない場合などには設定しておくと良いと思う。

続きを読む

[WP]wordpressテンプレートファイルの翻訳方法

プラグインと同じくテーマもmoファイルで翻訳可能らしいので作り方メモ。
幅広く使ってもらうテーマを作るなら必須と言える。
プラグインの翻訳もほぼ同じ。

翻訳には言語ファイルの編集ソフトが必要。
有名なのはpoEditだろうか。

参考:Translating WordPress

さらっとpoEditの使い方を書くと

  1. poEditを起動する
  2. 新規カタログ→プロジェクトの設定
    • プロジェクトの名前とバージョン→テーマの名前とか適当に
    • 翻訳チーム→自分の名前とか
    • 言語→japanese
    • 国→JAPAN
    • 文字符号化&ソースコードの(ry→UTF-8
    • ページのパス→「ドット」だけ入力
    • パス→「新しいアイテム」で「ドット」
    • キーワード→「__(アンダーバー2つ)」と「_e」
  3. OKしてテーマのフォルダ内に保存。ファイル名はja.po(プラグインなら、プラグイン名-ja.po)
  4. カタログのソースから更新で翻訳文取り込み
  5. ひたすら翻訳。保存したら自動的にmoが作成・更新される

続きを読む