固定ページへのリンクをカスタムフィールドの値によって条件分岐し、表示・非表示を分ける

グローバルナビや、サイドバーのナビゲーションの中で特定の固定ページへのリンクだけを表示したくて組んだコードです。

<?php
$my_query = new WP_Query();
$my_query ->query('post_type=page&showpost=2&posts_per_page=2&meta_key=gnavi&meta_value=2');
if($my_query->have_posts()):
?>
<?php $pageid=get_the_ID();?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<?php if($pageid == get_the_ID()):?>
<li><strong><?php the_title(); ?></strong></li>
<?php else:?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endif;?>

<?php endwhile; endif; ?>
<?php wp_reset_query();?>

コードを分解してみます。

<?php
$my_query = new WP_Query();
$my_query ->query('post_type=page&showpost=2&posts_per_page=2&meta_key=gnavi&meta_value=2');
if($my_query->have_posts()):
?>

WP_Queryオブジェクトを使います。
上記3行目は、条件の設定です。

post_type=page

この指定で、投稿タイプが固定ページの記事を読み込みます。

showpost=2&posts_per_page=2

これは、表示する記事数の指定です。showpostだけだとWordpressのダッシュボード側の設定が優先されるようなので、post_per_pageのパラメータも同時に記述して下さい。

参考:WordPress の WP_Query() で記事を一覧にする際に表示件数を変更する場合は posts_per_page を設定する | ウェブル

meta_key=gnavi&meta_value=2

meta_keyでカスタムフィールドの名前を、meta_valueでカスタムフィールドに入力した値を指定しています。このようにすることでカスタムフィールドが指定された固定ページだけを読み込むことができます。

<?php $pageid=get_the_ID();?>

投稿をループ表示する前に、現在表示している固定ページのIDを取得します。

<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<?php if($pageid == get_the_ID()):?>
<li><strong><?php the_title(); ?></strong></li>
<?php else:?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endif;?>
<?php endwhile; endif; ?>
<?php wp_reset_query();?>

if関数で、現在表示している固定ページのIDと、ループ中に読み込んだ固定ページのIDの値を比較して、strongタグでタイトルを挟むか、aタグでタイトルを挟むか分岐しています。

ちなみにWP_Queryオブジェクトで指定するパラメータの情報は下記を参考にしてください。
テンプレートタグ/query posts – WordPress Codex 日本語版

関連記事

サーバー別インストールガイド