web-dev-qa-db-ja.com

Page_for_postsが表示されているかどうかを調べる方法(メニュー項目をスタイルするため)

投稿用の静的ページを設定しました(ページID = 110)。このページは、ユーザがログインしているときにのみメニューに表示されます。後者はheader.phpmenu <ul>タグ内からの抜粋)に次のように追加することで実現されます。

<?php wp_list_pages('sort_column=ID&exclude=100,110,145&title_li='); ?>
        <?php if ( is_user_logged_in() ) { ?>
            <li ><a href="<?php echo get_permalink(110); ?>">Title</a></li>
        <?php } else { ?>

        <?php } ?>

私はfreshy2を使用していて、ヘッダナビゲーションメニューの現在のページへのリンクが他のものとは別の背景色を持つようにCSSをカスタマイズしました(標準の手順...)。

しかし、ID 110のページは静的投稿ページであるため、このページで同じことをするための解決策が見つかりません。これは、現在の投稿タイプがis_page(110)であると認識しているのでis_single()falseを返し、投稿IDを問い合わせると最新の投稿のIDが返されるためです。現在の表示は常に変化するので、私は明らかに後者を使用して現在の表示を問い合わせることはできません。

これは私が現時点で持っているものです。この種の作品は、現在のところ、背景色がalways特殊色になっていますが、たとえ投稿ページが現在表示されている「項目」でなくてもです。

<?php if ( is_user_logged_in() ) { ?>
            <li <?php
                if (get_option('page_for_posts'))
                { 
                    echo " class=\"page_item page-item-110 current_page_item\"";
                }
                else
                { 
    global $wp_query;
    $thePostID = $wp_query->post->ID;
                    echo " class=\"" . $thePostID . "\"";
                }
            ?>><a href="<?php echo get_permalink(110); ?>">Title</a></li>
        <?php } else { ?>

        <?php } ?>

何か案は?どうもありがとうございました。

編集:

下記ので示唆されているように、このコードはうまくいきます(私は単にオリジナルのwp_list_pagesから欠けている値を追加しました):

        <?php if(!is_user_logged_in())
{
$args = array(
'exclude' => '100,110,145',
'sort column' => 'ID',
'title_li' => ''
 );
}
else
{
$args = array(
'exclude' => '100,145',
'sort column' => 'ID',
'title_li' => ''
 );
}

wp_list_pages( $args );
?>
1
s.d

メニューリンク自体ではなく、引数の周りに条件をラップしているのであれば、これはうまくいくはずだと思います。

if(!is_user_logged_in())
{
$args = array(
'exclude'      => '100,110,145'
 );
}
else
{
$args = array(
'exclude'      => '100,145'
 );
}

wp_list_pages( $args );
1
SamiSalami