• 解決済 john.book

    (@johnbook)


    特定の投稿を固定するのは、投稿一覧の編集で変更できますが
    これはhome.php、index.phpを表示してるときの設定かと思います。

    これを、毎回どの記事を開いても先頭にその投稿を表示したあと
    開いた投稿が続くようにしたいのですが、可能でしょうか?
    検索していますが調べ方が悪いのかいまいち出てきません。。

    そして、そうした際にその先頭の投稿のみ、タイトルのリンク

    <h2 class="posttitle"><a href="http://localhost/wordpress/test.html">
    test
    </a></h2>

    この、aタグを外すことは出来るでしょうか?

    自分でも引き続き調べていますが、どなたかご教授願えたらと思います。
    宜しく御願い致します。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 john.book

    (@johnbook)

    リサーチ不足でした。解決致しました。
    一応もしも同じつまづきをする方がいた場合参考になるようコードだけ貼っておこうと思います。

    single.php内で普段基本で使っているループより外(上)に

    <?php if(!is_single('先頭固定している投稿のID')): ?>
    <?php $sticky = get_option( 'sticky_posts' ); query_posts( 'p=' . $sticky[0] ); ?>
    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class('sticky'); ?>>
    <h2 class="posttitle"><?php the_title(); ?></h2>
    <p class="postdate">Posted on <?php the_time('Y年n月j日(D) H:i'); ?></p>
    <?php the_post_thumbnail(); ?>
    <?php the_content(); ?>
    </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>
    <?php endif; ?>

    ↑これで出来ることは

    • 先頭に固定している”投稿記事”を、どの投稿ページでも先頭に表示させる。
    • その固定している”投稿記事”のsingleページを開いた場合は二重表示しない。
    • 固定しているページのタイトルからは<a>タグを抜いている。

    次に、index.phpか、loop.php(テンプレートによって違う)の投稿ループの後
    私のテンプレートで言うと

    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

    の後に

    <?php if(is_sticky()):?>
    <h2 class="posttitle"><?php the_title(); ?></h2>
    <p class="postdate">Posted on <?php the_time('Y年n月j日(D) H:i'); ?></p>
    <?php else: ?>
    
    <!-- ここから -->
    <h2 class="posttitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <p class="postdate">Posted on <?php the_time('Y年n月j日(D) H:i'); ?></p>
    <!-- ここまではデフォルトであるコード -->
    
    <?php endif; ?>

    というif文で括ってやると<a>タグが消せる。
    タグ以外にも変更が出来るので応用が効きそうです。
    とても初歩的ですがハマったので…。

1件の返信を表示中 - 1 - 1件目 (全1件中)

トピック「特定の投稿を先頭に固定する、のをsingle.phpにも適用したい。」には新たに返信することはできません。