投稿されたタクソノミーターム名を表示する

記事に投稿されているカスタム分類(タクソノミーターム)だけを表示するタグ。

taxonomyは表示したいカスタム分類のタクソノミー名を記入すること

リンク付きで表示

■カンマで表示

<?php echo get_the_term_list( $post->ID, 'taxonomy', '分類: ', ', ', '' ); ?>

■ulリストで表示

<?php echo get_the_term_list($post->ID, 'taxonomy', '<ul ><li>','</li><li>','</li></ul>');  ?>

続きを読む 投稿されたタクソノミーターム名を表示する

フィールド内容の有無で条件分岐(AdvancedCustomFields)

AdvancedCustomFieldsというプラグインを使用し、タクソノミーのアーカイブページで値があるかないかで条件分岐しようしたらハマッたのでメモ。

get_field(‘フィールド名’ ,$post_id)で条件分岐

カスタムタクソノミー(ターム)で、作成したフィールドタイプに記入がある場合は表示させ、記入がない場合は別の内容を表示する。

※動作確認はタクソノミーテンプレート(taxonomy.php)のみ

<?php
$term_id = get_queried_object()->term_id;
$post_id = 'タクソノミー名_'.$term_id;
?>
<!--条件分岐ココから-->
<?php if( get_field('フィールド名' ,$post_id)): ?>
<?php the_field('フィールド名' ,$post_id); ?>
<?php else: ?>
<p>フィールドに内容がない場合はこちらを表示</p>
<?php endif; ?>
<!--条件分岐ココまで-->

ちなみに、get_fieldは以下の記述では動作しませんでした。

×get_field('フィールド名')
×get_field('フィールド名',$post->ID)

はじめ$post_idを、$post->IDとしていたため表示されずかなりハマりました…(笑
the_fieldも同様に「$post_id」で動作。

リンクなしtag(タグ名)を表示

WordPressのタグを表示するときの一般的なテンプレートタグ(タグ+リンクで表示)

<?php the_tags('前', '区切り文字', '後'); ?>

でも、リンクは出力せずタグ名だけ表示させたい場合もある。
そんな時は以下を使用。

get_the_tagsでタグ名だけ出力

<?php
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo $tag->name . ' ';
}
}
?>

テンプレートタグ/get the tags – WordPress Codex 日本語版

見た目をちょっと変えてみる

タグスラッグをclass(もしくはid)に割り当ててデザインを変える。

<?php
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo '<span class="' .$tag->slug . '">' . $tag->name . ' </span>';
}
}
?>

WPテーマのスタイルシート、ディレクトリ等のURL取得

WordPressの推奨タグが微妙に変わっていたのに・・・(とくにサイト情報まわり)全然気付いていなかったのでメモ。

ホームURL

  • bloginfo( ‘url’ )↓
  • echo home_url() [推奨]

フィードURL

  • bloginfo(‘feed_url’)↓
  • get_feed_link( ‘feed’ ) [推奨]

テーマディレクトリのURL

  • bloginfo( ‘template_directory’ )↓
  • bloginfo( ‘template_url’ )↓
  • get_template_directory_uri() [推奨]

テーマ・スタイルシートディレクトリのURL

  • bloginfo( ‘stylesheet_directory’ )↓
  • get_stylesheet_directory_uri() [推奨]

テーマ・スタイルシートのURL

  • bloginfo( ‘stylesheet_url’ )
  • get_stylesheet_uri() [推奨]

■URIを出力する場合

<?php echo get_stylesheet_directory_uri(); ?>

関数リファレンス/get stylesheet directory uri – WordPress Codex 日本語版

WPライブプレビューでトップ以外が表示されなかった件

WordPressはインストール(アップロード)したテーマを有効化せずとも、「ライブプレビュー」で確認することができます。

いつもの通り、新しいオリジナルテーマを確認しようと、「外観」→「テーマ」→「ライブプレビュー」で確認、ここまでは普通にトップページが表示されるんですが、投稿ページやカテゴリページなど別ページを確認しようとするとなぜか現在のテーマ(有効化されてるテーマ)が表示される。

しかし、WPデフォルトテーマ「twentyeleven」などをライブプレビューで確認すると、下層ページもちゃんとtwentyelevenのテーマで表示される。

!?

自作したテーマに問題があることはわかったけど、バージョンアップしてなんか仕様変わった?functions.phpか????

と、あれこれ悩むこと数時間・・・

footer.phpに

<?php wp_footer(); ?>

を入れ忘れていたことが原因だった。

(´;ω;`)・・・

wp_head()は</head>直前に、wp_footer()は</body>直前にいれることを忘れないように!

カスタム投稿タイプで条件分岐

カスタム投稿タイプのページでタームを指定し条件分岐をしようと、is_taxで試みたけどできなったんですが、is_object_in_termでできました。

カスタム投稿タイプ利用時はis_object_in_termで条件分岐

<?php is_object_in_term($post->ID, '$taxonomy', '$terms' ): ?>

$taxonomy:タクソノミー名
$term:タームID、ターム名、タームのスラッグ

例えば、タクソノミー名が「wordpress」、タームスラッグ「php」で条件分岐をしたい場合

<?php is_object_in_term($post->ID, 'wordpress', 'php' ): ?>
タクソノミー名(wordpress)タームスラッグ(php)での表示
<?php else: ?>
それ以外の表示
<?php endif; ?>

同じタクソノミーで複数のタームを指定したい場合

arrayで囲って複数ターム指定が可能

<?php is_object_in_term($post->ID, 'wordpress', array('php','theme') ): ?>
<?php else: ?>
それ以外の表示
<?php endif; ?>

投稿フォーマットの活用

WordPressバージョン3.1から導入された投稿フォーマット。
よく分からなかったのでスルーしていましたが…single.phpでちょっとした表示切替に役立つじゃん!ということで活用することにしました。

投稿画面
投稿画面内

投稿フォーマットの種類

  • aside/アサイド
  • audio/音声
  • chat/チャット
  • gallery/ギャラリー
  • image/画像
  • link/リンク
  • quote/引用
  • status/ステータス
  • video/動画

テーマを投稿フォーマットに対応させる

テーマが投稿フォーマットに対応していない場合は、function.phpに以下を記入します。

/*投稿フォーマット*/
add_theme_support( 'post-formats', array( 'aside', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video', 'audio' ) );

投稿フォーマットの各テンプレート(content-フォーマット名.php)と、標準フォーマット用のcontent.phpをテーマ内にアップロード。

さらに、投稿記事や固定ページなどのテンプレート内のthe_content()部分を、投稿フォーマットを読み込ませるタグに書き換えます。

single.phpまたはpage.phpに投稿フォーマットを読み込ませる

通常の投稿表示のタグ部分↓

<?php the_content(); ?>

上記をget_template_partで、投稿フォーマットのテンプレートパーツを読み込む タグに変更↓

<?php get_template_part( 'content', get_post_format() ); ?>

続きを読む 投稿フォーマットの活用

コピーライト

WordPressでfooter.phpなどに書くコピーライト(著作権表記)のPHPコピペです

Copyright(c) 2013 <a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> All Rights Reserved.

2012-2013(今の年)
のように今の年を自動表記させる場合は以下

Copyright(c) 2012-<?php echo date('Y');?> <a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> All Rights Reserved.