WordPressをCMSとして利用するときによく使う設定やコードなど。
パーマリンクの種類
WordPress管理画面、左カラムの「設定>パーマリンク設定」
カスタム構造のテキストボックス内に入力すると使用できます。
下記のように記述しますが、勿論此れ以外にも自由に組み合わせて書き換える事もできます。
- 投稿ID:/%post_id%/
- 投稿名:/%postname%/
- 投稿名+.html:/%postname%.html:
- 日付+投稿名:/%year%/%monthnum%/%day%/%postname%/:
- カテゴリ+投稿ID:/%category%/%post_id%/
- カテゴリ+投稿名:/%category%/%postname%/
「カテゴリ+投稿名:/%category%/%postname%/」が構造的に推奨されていますが、後々カテゴリの整理をしづらくなります。
そのため「投稿名:/%postname%/」が推奨される事もあるようです。
WordPressの埋め込み
<?php require './wp/wp-blog-header.php'; ?>
(埋め込むページからの相対パスを記述、この場合は同階層にwpというフォルダ名でWordPressを設置した際の記述です)。
htmlファイルの1行目(DOCTYPEより上)に上記を記述後、拡張子をhtmlからphpに変更。
WordPressをhtmlファイル内で動かす
.htaccessに下記内容を記述後、ルートフォルダへアップロードします。
AddType application/x-httpd-php .php .html
ロリポップサーバーをご使用の場合、上記記述では動作しませんので、下記記述に書き換えてアップロードします。
AddHandler php5.2-script html
記事一覧に詳細ページの1枚目の画像を抽出
WordPressの投稿記事内の画像の最初の1枚をサムネイルとして表示する方法│memocarilog様
記事一覧の画像を非表示
<?php $my_content = get_the_content(); $my_content = preg_replace("|(<img[^>]+>)|si","",$my_content); echo $my_content; ?>
新着情報などに。
WordPress内でのjQueryの記述
下記コメント部分に記述すれば普段の「$」でも動作します。
jQuery(function($) { // foo });
もしくは下記をheader.php内のwp_head();より前に記述する事でも普段通りに動作するようになります。
<?php wp_deregister_script('jquery'); wp_enqueue_script('jquery','https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'); ?>
googleにホスティングされているjQueryを読み込む際にはバージョンも確認してください。
https://developers.google.com/speed/libraries/#jquery
投稿、固定ページへのphpファイルの読み込み
下記をfunctions.phpへ追記。
function Include_my_php($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); include(STYLESHEETPATH . "/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
「example.php」というファイルを読み込ませたい場合、投稿や固定ページの埋め込みたい場所に下記コードを記述。
[myphp file='example']
.phpは省略します。
カテゴリ名の取得
<?php $category = get_the_category(); echo $category[0]->cat_name; ?> <?php $category = get_the_category(); echo $category[1]->cat_name; ?>
1行目 親カテゴリ名のみ取得。
2行目 子カテゴリ名のみ取得。
所属する全てのカテゴリのスラッグ名を取得
半角スペース区切り、最後のスペースは削除します。
クラス属性などに。
<?php $cats = get_the_category(); $str = ''; foreach( ( array )$cats as $cat ) { if( !in_array( $cat->cat_ID, $exclude ) ) { $str .= $cat->slug . ' '; } } echo rtrim( $str, ' ' ); ?>">
尚、6行目「slug」を「cat_name」に変更すると配列の内容がスラッグからカテゴリ名になります。
子カテゴリのスラッグ名から画像を出力
<img src="<?php bloginfo('template_url'); ?>/images/<?php $cats = get_the_category(); foreach($cats as $cat): if($cat->parent) echo $cat->slug; endforeach; ;?>.png">
- テーマフォルダ > images > 子カテゴリのスラッグ名.png
新着記事などのアイコンを表示させる時など。
singleページのbody_classにカテゴリ名を追加
singleページのbodyタグのクラス属性にカテゴリスラッグ名を追加します。
function.phpに下記を追記。
add_filter('body_class','add_category_to_single'); function add_category_to_single($classes, $class) { if (is_single() ) { global $post; foreach((get_the_category($post->ID)) as $category) { $classes[] = 'category-'.$category->category_nicename; } } return $classes; }
「category-カテゴリ名」が付与されます。
ここではカテゴリページでのクラス名と同じものにしていますが、6行目「category-」にて独自のものに変更可能です。
body_classの使い方
header.phpのbodyタグにbody_classを追記します。
<body <?php body_class(); ?>>
single カテゴリーごとにデザインを変更
single.phpをsingle-normal.phpにリネームし、新たに下記内容のsingle.phpを作成します。
<?php if ( in_category(array('works')) ) { get_template_part( 'works' , false ); } elseif ( in_category( array('information') ) ) { get_template_part( 'information' , false ); } else { get_template_part( 'single' , 'normal'); } ?>
2行目「works」にカテゴリ名、3行目「works」に読み込むファイル名を記述します。
4行目「elseif~」から6行目「} 」までを増減する事で対応させたいカテゴリを増減できます。
カテゴリページのデザイン変更の場合は「category-カテゴリ名.php」のファイル名に変更するだけでオーケーです。
テーマファイルによってはcategory.phpが存在しないものもありますが、上記の通りで切り替え可能です。
ループ処理
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> View article <?php endwhile; ?><?php else : ?> When there are no articles <?php endif; ?>
新着情報などに使う時用
<dl> <?php $posts = get_posts('numberposts=5&category=7'); global $post; ?> <?php if($posts): foreach($posts as $post): setup_postdata($post); ?> <dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dt> <dd><? the_time('Y/n/j H:i');?><br><?php the_content(); ?></dd> <?php endforeach; endif;?> </dl>
dlの中にdt、ddを繰り返し展開していくので、スクリプトをdlで囲います
numberposts=5は表示させる記事数
category=7は表示させたいカテゴリのID
the_time(‘Y/n/j H:i’)は年(year)/月(month)/日(day)の表示形式、順番や間のスラッシュの変更も自由です
日付フォーマットに関する詳しい情報は小粋空間さんの「5.フォーマット文字一覧」にて記載されています
↓以下引用させて頂いたフォーマット一覧↓
単位 | フォーマット文字 | 意味 | 表示例 |
---|---|---|---|
年 | Y | 4桁の数字 | 1999, 2003 |
y | 2桁の数字 | 99, 03 | |
月 | m | 2桁の数字 | 01 – 12 |
n | 1桁または2桁の数字 | 1 – 12 | |
F | フルスペル | January – December | |
M | 3文字の省略形式 | Jan – Dec | |
日 | d | 2桁の数字 | 01 – 31 |
j | 1桁または2桁の数字 | 1 – 31 | |
曜日 | D | 3文字の省略形式 | Mon – Sun |
l | フルスペル | Sunday – Saturday | |
午前/午後 | a | 小文字 | am / pm |
A | 大文字 | AM / PM | |
時 | h | 2桁の数字・12時間表示 | 01 – 12 |
g | 1桁または2桁の数字 12時間表示 |
1 – 12 | |
H | 2桁の数字・24時間表示 | 00 – 23 | |
G | 1桁または2桁の数字 24時間表示 |
0 – 23 | |
分 | i | 先頭にゼロをつける | 00 – 59 |
秒 | s | 先頭にゼロをつける | 00 – 59 |
以下は年月日・時分秒の設定早見表です。
年 | 月 | 日 | 設定例 | 表示 | |||
---|---|---|---|---|---|---|---|
4桁 | Y | 2桁 | m | 2桁 | d | Y/m/d | 2007/01/01 |
0なし | j | Y/m/j | 2007/01/1 | ||||
0なし | n | 2桁 | d | Y/n/d | 2007/1/01 | ||
0なし | j | Y/n/j | 2007/1/1 | ||||
2桁 | y | 2桁 | m | 2桁 | d | y/m/d | 07/01/01 |
0なし | j | y/m/j | 07/01/1 | ||||
0なし | n | 2桁 | d | y/n/d | 07/1/01 | ||
0なし | j | y/n/j | 07/1/1 |
時 | 分 | 秒 | 設定例 | 表示 | |||
---|---|---|---|---|---|---|---|
12時間表記・2桁 | h | 2桁 | i | 2桁 | s | h:i:s | 01:02:03 |
12時間表記・0なし | g | g:i:s | 1:02:03 | ||||
24時間表記・2桁 | H | H:i:s | 13:02:03(01:02:03) | ||||
24時間表記・0なし | G | G:i:s | 13:02:03(1:02:03) |
条件分岐
<?php if (is_home()) { ?> <body id="index" <?php body_class(); ?>> <?php } elseif (is_search()) { ?> <body id="search" <?php body_class(); ?>> <?php } elseif (is_archive()) { ?> <body id="archive" <?php body_class(); ?>> <?php } elseif (is_category()) { ?> <body id="cat-<?php the_category_ID(); ?>" <?php body_class(); ?>> <?php } elseif (is_page()) { ?> <body id="<?php function get_page_uri2($page_id) {$page = get_page($page_id); return $page->post_name;} ?><?php echo get_page_uri2($wp_query->post->ID);?>" <?php body_class(); ?>> <?php } elseif ( is_single()) {?> <body id="single" <?php body_class(); ?>> <?php } else { ?> <body <?php body_class(); ?>> <?php } ?>
勿論bodyのIDを変更する以外にも使用できます。
TOPのヘッダーのみにカルーセルいれたりとか。
自動改行を解除
WordPressにより自動で挿入される「p」「br」タグの解除。
固定ページ
page.php内get_header直後に下記を挿入。
<? remove_filter('the_content', 'wpautop'); the_content(); ?>
brBrbrプラグイン使用時には一行追加します。
<? remove_filter('the_content', 'wpautop'); remove_filter('the_content','brBrbr'); the_content(); ?>
Contact Form 7
config.php内に下記を記述します。
define ('WPCF7_AUTOP', false);
※require_once(ABSPATH . ‘wp-settings.php’);より上に記述します。
コメント