Contenu connexe
Similaire à WordBeach @kurudrive (20)
Plus de Hidekazu Ishikawa (20)
WordBeach @kurudrive
- 8. カスタムフィールドの利用例1-2
これだけすべてのソースを本文欄に
入力しなくてはならない。
HTMLの知識が少ない人には
わかりにくい。
・修正しにくい
・一度崩れると収集がつかない
- 11. カスタムフィールドの設定方法_1
①プラグイン 『Custom Field Template』 をインストールして有効化
②カスタムフィールドの設定
「投稿」で使うのか「固定ページ」で使うのか、
それとも指定のカスタム投稿タイプで使うの
かを指定。
フィールドの名前
フィールドのタイプ
ラベルの名前
インストールするとサンプルコードが入力されているので
なんとなくわかると思います。
- 14. カスタムフィールドの設定方法_4
カスタムフォールドが空じゃない場合のみ表示する
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php $exCompanyname = post_custom('ex-companyname');
if ( ! empty( $exCompanyname ) ) { ?>
<tr>
<th>会社・事務所・事業者名</th>
<td><?php echo $exCompanyname ?></td>
</tr>
<?php } ?>
<?php endwhile; // end of the loop. ?>
入力されていなかったら行ごと表示しない
- 18. カスタムフィールドの利用例2
ブラグイン(カスタムフィールドテンプレート)の設定
[詳細ページの使用]
type = radio
value = 詳細ページを使用する # 詳細ページを使用しない(文字のみ) # サイト内のページに直接リンクする # 外部サイトへ直接リンクする
default = 詳細ページを使用する
[リンク先URL]
type = text
size = 35
label = リンクさせるURLを記入してください。
新着情報一覧のソース
<ul>
<?php while ( $loop->have_posts() ) : $loop->the_post();?><li>
<span class="infoDate"><?php the_time('Y.m.d'); ?></span>
<?php // 文言がプラグインの設定と連動してるので変更の際は要注意 ?>
<?php if (post_custom('詳細ページの使用') == 詳細ページを使用しない(文字のみ) ) { ?>
<?php the_title(); ?>
<?php } else if (post_custom('詳細ページの使用') == サイト内のページに直接リンクする ) { ?>
<a href="<?php echo post_custom('リンク先URL')?>"><?php the_title(); ?></a>
<?php } else if (post_custom('詳細ページの使用') == 外部サイトへ直接リンクする ) { ?>
<a href="<?php echo post_custom('リンク先URL')?>" target="_blank"><?php the_title(); ?></a>
<?php } else { ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php } ?>
</li>
<?php endwhile; ?>
</ul>
※た、たぶんフィールド名が日本語ってあまり良くないと思います・・・。
- 24. カスタム投稿タイプを使う理由(2)
投稿 2011年8月のお知らせ記事を表示させたい
カテゴリー
・お知らせ
カテゴリーIDなどをテンプレートファイルに直書きして絞り込み
・制作実績
→ちょっと面倒だし制御しにくい。
投稿(お知らせ) 2011年8月のお知らせ記事アーカイブ
制作実績 2011年8月の制作実績記事アーカイブ
カテゴリー
・企業サイト
・ECサイト
・ブログ アーカイブが制御しやすい。
- 26. カスタム投稿タイプが使えるように設定
// ▼▼カスタム投稿タイプ/カスタム分類の追加
add_action( 'init', 'create_post_type', 0 );
function create_post_type() {
// ▼お知らせ
register_post_type( 'info', /* post-type */
array(
'labels' => array(
'name' => __( 'お知らせ' ),
'singular_name' => __( 'お知らせ' )
),
'public' => true,
'menu_position' =>5,
'has_archive' => 'info/archive/'
)
);
// ▲お知らせ
}
※他の変数は 関数リファレンスを参照
- 28. お知らせ一覧(お知らせトップ)ページの作成
新しく追加した投稿タイプのトップページは「固定ページ」で作ります。
【1】 「お知らせ」トップ用のテンプレートファイルを用意する。
page-info.php 「お知らせ」トップ用のテンプレートファイル
【2】 page-info.phpが「お知らせ」の投稿を表示するようにカスタマイズ
<ul class="entryList">
<?php
/* カスタム投稿タイプを表示する */
$loop = new WP_Query( array( 'post_type' => 'info' ) );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<li>
<span class="infoDate"><?php the_time('Y.m.d'); ?></span>
<?php // 文言がプラグインの設定と連動してるので変更の際は要注意 ?>
<?php if (post_custom('詳細ページの使用') == 詳細ページを使用しない(文字のみ) ) { ?>
<?php the_title(); ?>
<?php } else if (post_custom('詳細ページの使用') == サイト内のページに直接リンクする ) { ?>
<a href="<?php echo post_custom('リンク先URL')?>"><?php the_title(); ?></a>
<?php } else if (post_custom('詳細ページの使用') == 外部サイトへ直接リンクする ) { ?>
<a href="<?php echo post_custom('リンク先URL')?>" target="_blank"><?php the_title(); ?></a>
<?php } else { ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php } ?>
</li><?php endwhile; ?>
</ul>
【3】 「お知らせ」の固定ページを投稿する。
page-info.phpが適用されるようにスラッグ名を info にして投稿。
- 29. お知らせのアーカイブを使えるように設定
【1】 functions.phpに下記のソースを貼り付け
// ▼カスタム投稿タイプのアーカイブ出力
global $my_archives_post_type;
add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 );
function my_getarchives_where( $where, $r ) {
global $my_archives_post_type;
if ( isset($r['post_type']) ) {
$my_archives_post_type = $r['post_type'];
$where = str_replace( '¥'post¥'', '¥'' . $r['post_type'] . '¥'', $where );
} else {
$my_archives_post_type = '';
}
return $where;
}
add_filter( 'get_archives_link', 'my_get_archives_link' );
function my_get_archives_link( $link_html ) {
global $my_archives_post_type;
if ( '' != $my_archives_post_type )
$add_link .= '?post_type=' . $my_archives_post_type;
$link_html = preg_replace("/href=¥'(.+)¥'¥s/","href='$1".$add_link."'",$link_html);
return $link_html;
}
// ▲カスタム投稿タイプのアーカイブ出力
- 30. お知らせのアーカイブテンプレートを作成
【2】 「お知らせ」のアーカイブテンプレートを作成する。
archive-info.php 「お知らせ」アーカイブ用のテンプレートファイル
投稿タイプの値
<h2><?php printf( get_the_date('Y') ); ?>年のお知らせ</h2>
<div class="infoList" class="sectionBox">
<ul class="entryList">
<?php while ( have_posts() ) : the_post(); ?>
<li>
<span class="infoDate"><?php the_time('Y.m.d'); ?></span>
<?php // 文言がプラグインの設定と連動してるので変更の際は要注意 ?>
<?php if (post_custom('詳細ページの使用') == 詳細ページを使用しない(文字のみ) ) { ?>
<?php the_title(); ?>
<?php } else if (post_custom('詳細ページの使用') == サイト内のページに直接リンクする ) { ?>
<a href="<?php echo post_custom('リンク先URL')?>"><?php the_title(); ?></a>
<?php } else if (post_custom('詳細ページの使用') == 外部サイトへ直接リンクする ) { ?>
<a href="<?php echo post_custom('リンク先URL')?>" target="_blank"><?php the_title(); ?></a>
<?php } else { ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php } ?>
</li><?php endwhile; ?>
</ul>
- 31. お知らせの詳細ページ / ローカルメニューの作成
「お知らせ」詳細ページ用のテンプレートファイルを作成する。
single-info.php 「お知らせ」詳細ページ用のテンプレートファイル
投稿タイプの値
「お知らせ」用ローカルメニュー
page-info.php
archive-info.php
single-info.php
<ul>
<?php wp_get_archives('type=yearly&post_type=info'); ?>
</ul>
- 37. カスタム分類が使えるように設定
// ▼▼カスタム投稿タイプ/カスタム分類の追加
add_action( 'init', 'create_post_type', 0 );
function create_post_type() {
// ▼お知らせ
register_post_type( 'info', /* post-type */
array(
'labels' => array(
'name' => __( 'お知らせ' ),
'singular_name' => __( 'お知らせ' )
),
'public' => true,
'menu_position' =>5,
'has_archive' => 'info/archive/'
)
);
// ▲お知らせ
// ▼お知らせのカテゴリー
register_taxonomy(
'info-cat', /* タクソノミーの名前 */
'info', /* お知らせで設定する */
array(
'hierarchical' => true, /* 親子関係が必要なければ false */
'update_count_callback' => '_update_post_term_count',
'label' => 'お知らせカテゴリー',
'singular_label' => 'お知らせカテゴリー',
'public' => true,
'show_ui' => true,
'menu-order' => true,
)
);
// ▲お知らせのカテゴリー
}
※他の変数は こちらの記事等を参照
- 38. カテゴリー(カスタム分類)ページの作成
【1】 カスタム分類用のテンプレートファイルを用意する。
taxonomy-info-cate.php 「お知らせ」カテゴリー(カスタム分類)用のテンプレートファイル
【2】 taxonomy-info-cate.phpが「お知らせ」のカテゴリーに投稿された記事を表示するように作成
<?php $catinfo = get_term_by('slug',$term,$taxonomy); ?>
<h2><?php echo esc_html($catinfo->name); ?></h2> 表示しているページのカスタム分類名
<?php query_posts($query_string ); ?>
<?php while (have_posts()) : the_post(); ?> 投稿が属するカスタム分類名
<ul class="entryList">
<li>
<span class="infoDate"><?php the_time('Y.m.d'); ?></span>
<?php $taxo_list = get_the_term_list( $post->ID, ‘info-cat', '', ', ', '' );
if ( $taxo_list ): ?>
<span class="infoCate">[ <?php echo $taxo_list; ?> ] </span>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
- 41. カスタム分類のパーマリンクを調整する
HOME > おしらせ > キャンペーン
理想:http://ドメイン名/info/campaign/
現実:http://ドメイン名/info-cate/campaign/
function.phpに追加
// ▼カスタム分類のパーマリンクを”/カスタム投稿名/カスタム分類名/項目”にする。
add_filter( 'term_link', 'my_term_link' ,10,3);
function my_term_link( $termlink, $term, $taxonomy){
$t=get_taxonomy($taxonomy);
$wp_home = get_option("home");
$post_type = $t->object_type[0];
if(!isset($t->object_type[1])) {
$termlink = str_replace($wp_home,$wp_home."/".$post_type,$termlink);
}
return $termlink;
}
// ▲カスタム分類のパーマリンクを”/カスタム投稿名/カスタム分類名/項目”にする。
http://ドメイン名/info/info-cate/campaign/