自分のためのメモ

投稿の「ブログのトップに固定」が効かなかったので調べる

固定ページを利用したTOPページに数件だけ投稿記事を表示させていたのだが、表題のような事象が起きたのでチェック。
(トップ固定そのものを今まであまり意識してこなかった)

get_posts()を利用していたのを

<!-- get_posts() -->
<?php
    $posts = get_posts(array(
        "post_type"   => "post",
        "numberposts" => 3
    ));
    if ( $posts ) : ?>
        <?php foreach( $posts as $post ) : setup_postdata($post); ?>
    <p>
        <?php if($post->post_content=="") : ?>
        <time><?php the_time('Y/m/d'); ?></time><strong><?php echo get_the_title(); ?></strong>
        <?php else : ?>
        <time><?php the_time('Y/m/d'); ?></time><strong><a href="<?php the_permalink(); ?>" class="anime"><?php echo get_the_title(); ?></a></strong>
        <?php endif ; ?>
        
    </p>   
        <?php endforeach; ?>
    <?php else : ?>
            
    <p><?php _e('記事が見つかりませんでした。'); ?></p> 
<?php endif; wp_reset_postdata(); ?>
<!-- get_posts() -->

WP_query()に変更。

<!-- WP_query() -->
<?php
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 3
    );
    $the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <p>
            <?php if($post->post_content=="") : ?>
            <time><?php the_time('Y/m/d'); ?></time><strong><?php echo get_the_title(); ?></strong>
            <?php else : ?>
            <time><?php the_time('Y/m/d'); ?></time><strong><a href="<?php the_permalink(); ?>" class="anime"><?php echo get_the_title(); ?></a></strong>
            <?php endif ; ?>
        </p>
    <?php endwhile; ?>
<?php else : ?>
    <p><?php _e('記事が見つかりませんでした。'); ?></p>
<?php endif; wp_reset_postdata(); ?>
<!-- WP_query() -->

これでトップ固定が効く様になった。

【追記】別件でTOPページのtitleが「ニュース」といつの間にかなっていた件

2~3年前の納品時には問題なかったが、最近依頼でWPやプラグインのバージョンをアップデートした際、検索の結果の表記(TOPページ)が「ニュース|株式会社〇〇」となっていたので調査。

TOPページは固定ページで表示させており、ループ直前の
$wp_query = new WP_Query($args);
にある変数名「$wp_query」がグローバルに影響があるので、よくなかったみたい。
なので、こちらも

     (略)
      ・
      ・
    $the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
?>

で直りました。