覚えてしまえば大したことない範囲だけど、ちょっと注意が必要。
前提的な話
色々案件を触ってると、ページ指定をするときはIDよりもスラッグで指定することが多い。
URLに全角が使えるってなってもメリット薄い気がするし、スラッグとURLが同一のほうがわかりよいし、いいんじゃないのって思う。
基本形
/* 特定ページを指定 */
<?php if(is_page('aaa')): ?><?php endif; ?>
/* 特定ページを除外 */
<?php if(!is_page('aaa')): ?><?php endif; ?>
/* 特定ページを複数指定 */
<?php if(is_page(array('aaa','bbb','ccc','ddd','eee'))): ?><?php endif; ?>
複数指定する場合はarray()で囲う必要がある、要するに配列として書く必要がある。
複数条件で指定
/* 条件を複数指定 */
<?php if(is_home() || is_front_page()) : ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/css/index.css">
<?php endif; ?>
/* 除外する場合 */
<?php if(!is_home() && !is_front_page()) : ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/css/index.css">
<?php endif; ?>
除外する場合は「!」だけじゃなくて、「||」だったら「&&」にする。
「○○または✕✕を指定」「○○と✕✕は除外」の考え方か。
親ページの指定
functions.phpに以下の内容を記載することで、特定の親ページを持つページに対しての条件分岐が作成できる。
/* 親スラッグ指定許可 */
function is_parent_slug() {
global $post;
if ($post->post_parent) {
$post_data = get_post($post->post_parent);
return $post_data->post_name;
}
}
こんな感じで使う。
<?php if(is_page('form') || is_parent_slug() === 'form'): ?>
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/form.css">
<?php endif; ?>
子ページだけよりも親込みになるケースが多いからこの形で覚えておけばいいと思う。
特定の親ページを持つページを除外する場合はこう。
<?php if(!(is_parent_slug() === 'form')): ?>
<?php endif; ?>
そのまま!をつけるんじゃなくて、()で囲む必要がある。
コメント