テンプレートタグ | Published 2011/07/10 at 6:47 PM
現在ページをメニューで色の変更などをして、現在位置を明確にする方法として
jQueryを使う方法があります。
他にもやり方があるので、覚書がてら紹介
1番目の紹介としては、
WordPressで、カスタムメニュー機能や、テンプレートタグの一覧機能を使って
WordPressで吐き出すCSSを使う方法
WordPressでは、表示しているページ、投稿に関連づいて、下記のCSSを吐き出します。
.current-menu-item
.current-page-ancestor
.current-category-ancestor
.current-menu-parent
.current-menu-ancestor
.current-page-parent
.current-menu-item
WordPressにCSSを吐き出してもらわずに、テーマでシンプルにメニューを作る場合もありますよね。
※自動で書き出されるCSSが・・・あまりにも多くて嫌というとき
テーマのための関数を作り、現在表示のURLを取得して、classを書き出す
jQueryを使う方法と仕組みが同じですが、PHP版のやり方
※パーマリンク設定がされているのが前提です。
//テーマのための関数
function currentPage($chkpage=''){
$chk=false;
if (is_home() && $chkpage=='home') $chk=true;
if (is_page('about') && $chkpage=='about') $chk=true;
if (!is_home() && in_category('blog') && $chkpage=='blog') $chk=true;
if ( $chk) echo 'class="currentPage"';
}
//メニューテンプレート
<div id="navigation">
<ul id="nav">
<li><a href="<?php bloginfo( 'url' ); ?>" title="ホーム" <?php currentPage('home'); ?>>Home</a></li>
<li><a href="<?php bloginfo( 'url' ); ?>/about" title="WPBPとは" <?php currentPage('about'); ?>>About</a></li>
<li><a href="/community" title="コミュニティ" >Community</a></li>
<li><a href="<?php bloginfo( 'url' ); ?>/blog" title="管理人日記" <?php currentPage('blog'); ?>>Blog</a></li>
<li><a href="/links" title="リンク集" >Links</a></li>
</ul>
</div>
</div>
テンプレートタグ | Published 2011/07/07 at 9:06 PM
たとえば、「パン」というカテゴリがあり、連なるサブカテゴリに「菓子」「フランス」「イギリス」なんてあったとする
各、サブカテゴリに投稿があり、サブカテゴリ順に投稿があり、下記みたいにだしたいときの例
菓子(サブカテゴリ)
クリーム(投稿タイトル)
ジャム(投稿タイトル)
フランス(サブカテゴリ)
バゲット(投稿タイトル)
バタール(投稿タイトル)
イギリス(サブカテゴリ)
バゲット(投稿タイトル)
バタール(投稿タイトル)
1つ、テーマのための関数を作っています。
http://wpbp.net/community/templateusage/20110705837/
もちろん、合わせ技でコード書くのもOK
<?php
//指定したカテゴリに属するサブカテゴリ情報を取得 例)花のカテゴリID=5
$catArray =get_categories('child_of=5');
//サブカテゴリ情報を1つづつとりだし
foreach($catArray as $cat){
?>
*********
<h2><?php echo $cat->cat_name;?></h2>
<?php
//スラグをつかって、サブカテゴリに属する投稿を取得
$box_posts=get_post_lists(-1,$cat->slug);
//投稿のタイトルを表示
foreach($box_posts as $post){
?>
<h3><?php echo $post->post_title;?></h3>
<?php } ?>
<?php } ?>
カテゴリ説明を入力していれば、表示することもできますね。
テンプレートタグ | Published 2011/07/07 at 9:27 AM
一覧などで、記事内容を全部表示させずに、抜粋を表示
・・・が表示されるときに、続きを読ませるリンクを作る
以前は、別でリンクを用意するしかなかったのですが、自分で加工できるようになりました。
function new_excerpt_more($post) {
return ' ・・・<br /><a href="'. get_permalink($post->ID) . '">' . '全部読む' . '</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');
上記、よくばった例ですが
記事の終わりには、・・・をつけて
改行して、「全部読む」のリンク
いろいろできそうですね。
テンプレートタグ | Published 2011/07/05 at 5:50 PM
自分で独自の読み込みをしたとき、いつもの投稿タグが使えたらいいのに・・って思うことがよくあります。
投稿には書いたけど、抜粋に書いてない
一覧などで、抜粋表示したいのだけど、独自の読み込みだと、抜粋に文字を入力していなければからっぽ
投稿をそのまま使えば、リンクや画像なども、文字切り出しや、リンクや画像は除去なんて自分でやるのも面倒
そんな時、setup_postdata()関数を使うと便利です。
$box_postsという配列に、独自読み込みした投稿データが入っている時の例です。
<p><?php setup_postdata($box_posts[0]); the_excerpt();?></p>
テンプレートタグ | Published 2011/07/05 at 4:19 PM
WordPressでサイトを作るとき、特定のカテゴリで指定件数だけ取得したい
テンプレートによって、装飾のHTMLタグは違う・・・
なんて事、よくありませんか?
私は、テーマのための関数に、下記のような汎用で使える関数を作り
function get_post_lists($num=10,$catslug=null){
$myposts = get_posts('numberposts='.$num.'&category_name='.$catslug);
return $myposts;
}
表示したところで、呼び出します。
<?php $box_posts=get_post_lists(3);?>
カテゴリを指定するなら、スラッグで
<?php $box_posts=get_post_lists(3,'news');?>
くるくる回して使ったり、位置を指定して使ったり、おこのみに。
テンプレートタグ | wpbptipsPublished 2011/01/19 at 9:50 PM
当コミュニティサイトのトップページで使っている方法ですが
http://wpbp.net/pgdesign/
投稿者一覧 (実際には登録されているユーザさんたちです。)を、最新の登録3件表示しています。
ユーザのメタ情報は、連想配列というのに入ってくるので、指定のメタ情報をキーとしてユーザ情報を入れた配列を作りなおして、整列させます。
$userlist=get_users_of_blog(); //ユーザリストの取得
$idlist= array(); // ソートするためのキー配列の準備
foreach ($userlist as $user) {
$idlist[get_the_author_meta( 'ID', $user->ID)]= $user;
}
krsort($idlist); // IDで降順
// ソートした順番で$idlistから取りだす
$wi=0;
foreach ( $idlist as $user) {
//ユーザ情報が使えます。
}
このサイトでの利用方法は、最新のユーザ3件を表示しているので、3件取得したらループを脱出してます。
使っている部分のHTMLソースを表示して、動きを確認してくださいね
<?php
$userlist=get_users_of_blog(); //ユーザ情報の取得
$idlist= array(); // idをキーとした配列を準備
foreach ($userlist as $user) {
$idlist[get_the_author_meta( 'ID', $user->ID)]= $user;
}
//
krsort($idlist); // キーの順番(降)でソートする
// ソートした順番で$idlistから取りだす
$wi=0;
foreach ( $idlist as $user) {
if($wi>=3) break;
if (get_the_author_meta( 'user_level', $user->ID)<>10){
?>
<!-- 登録ユーザ情報 -->
<p><?php echo get_avatar($user->ID,50); ?>
<img src="<?php bloginfo( 'template_url' ); ?>/img/icon.gif" alt="" border="0" /> <a href="<?php echo get_author_posts_url( $user->ID); ?>"><?php the_author_meta( 'display_name', $user->ID); ?></a>
<br />
<?php
if (get_the_author_meta( 'program', $user->ID)<>'' || get_the_author_meta( 'design', $user->ID)<>'' ){
?>
<span>(<?php the_author_meta( 'program', $user->ID); ?><?php the_author_meta( 'design', $user->ID); ?>)</span>
<br />
<?php
} ?>
<?php the_author_meta( 'user_description', $user->ID); ?><br clear="left" />
</p>
<p><img src="<?php bloginfo( 'template_url' ); ?>/img/line.gif" alt="" border="0" /></p>
<!-- 登録ユーザ情報 おわり -->
<?php
$wi++;
}} ?>
テンプレートタグ | Published 2010/12/18 at 9:55 AM
親ブログの情報を持つグローバル変数
<?php
global $current_site;
?>
print_r関数で中身を見ると下記の情報が取得されている
[id] => 1
[domain] => wpbp.net
[path] => /pgdesign/
[blog_id] => 1
[cookie_domain] => wpbp.net
[site_name] => サイト プログラマとデザイナー
現在の子ブログの情報を持つグローバル変数
<?php
global $current_blog;
?>
print_r関数で中身を見ると下記の情報が取得されている
[blog_id] => 4
[site_id] => 1
[domain] => wpbp.net
[path] => /pgdesign/tagplugin/
[registered] => 2010-12-03 14:46:40
[last_updated] => 2010-12-18 00:55:52
[public] => 1
[archived] => 0
[mature] => 0
[spam] => 0
[deleted] => 0
[lang_id] => 0