web-dev-qa-db-ja.com

Previous and Next Postリンクが機能しない

Single.phpでは、ループ内にprevious_post_linknext_post_linkを追加しようとしました。しかし、ビューがサイトのソースになっても何もレンダリングされません。見やすくするためにprevious_post_linkh4タグ内に追加しました。通常はpagination-bottomに追加します。なんでこんなことが起こっているの?

これが私のコードです

    <?php if (have_posts()) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <div class="single-post-wrap col-8 Push-2">
            <div class="single-post-feat-img">
                <figure>
                    <?php the_post_thumbnail('news-thumb-single-post') ?>
                </figure>
            </div>
            <article>
                <h4><?php echo get_the_title(); ?></h4>
                <h6><?php echo get_the_date(); ?></h6>
                <hr>
                <p><?php the_content(); ?></p>
                <h4><?php previous_post_link('%link', 'Pre Post', TRUE); ?></h4>
                <hr>
            </article>
            <div class="pagination-bottom">
                <div class="pre-post">
                <a href=""><i class="fa fa-angle-left"></i>Προηγούμενο</a>
                </div>
                <div class="next-post"><a href="">Επόμενο<i class="fa fa-angle-right"></i></a>
                </div>
            </div>
        </div>   
    <?php endwhile; ?>
<?php endif; ?>
1
hambos22

編集

以前の質問の1つに戻って参照してください 私は答えました、あなたはカスタム分類法を使っているので、これはおそらくあなたの問題です。それに応じてtaxonomyパラメータを設定する必要があります。私の最初の答えを見てください

元の回答

ここで確認することがいくつかあります

  • next_post_link はどこにありますか。デフォルトで除外しましたか?

  • 既定のカテゴリまたはカスタム分類法を使用していますか。 $in_same_term パラメーターがtrueに設定されている場合、taxonomyパラメーターはデフォルトでcategoryに設定されます。カスタム分類法を使用している場合は、taxonomyパラメータをカスタム分類法に設定する必要があります。

これで問題が解決した場合は、14のテーマのナビゲーションを使用して何が起こるのかを確認してください。

function twentyfourteen_post_nav() {
    // Don't print empty markup if there's nowhere to navigate.
    $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true );
    $next     = get_adjacent_post( false, '', false );

    if ( ! $next && ! $previous ) {
        return;
    }

    ?>
    <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'twentyfourteen' ); ?></h1>
        <div class="nav-links">
            <?php
            if ( is_attachment() ) :
                previous_post_link( '%link', __( '<span class="meta-nav">Published In</span>%title', 'twentyfourteen' ) );
            else :
                previous_post_link( '%link', __( '<span class="meta-nav">Previous Post</span>%title', 'twentyfourteen' ) );
                next_post_link( '%link', __( '<span class="meta-nav">Next Post</span>%title', 'twentyfourteen' ) );
            endif;
            ?>
        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}

Single.phpの中でtwentyfourteen_post_nav()を付けて呼び出すだけです。

編集2

私はあなたのコードを少し修正しました。これが変更点です

  • echo get_the_title()echo get_the_date()を使わないでください。返された関数the_title()the_dateを単に使うことができます

  • <article>タグの内側から<h4><?php previous_post_link('<p id="next-link">%link</p>', 'Next Post', TRUE); ?></h4>を削除しました

  • <div class="pagination-bottom"></div>内のすべてを削除し、それを14のナビゲーション機能に置き換えました

テストしたように、これは私の側では完璧に動作します。あなたのニーズに合うように、myORIGINAL ANSWERで追加したページ付け関数を変更してください。これは私がテストしたように修正されたあなたのsingle.phpです、そしてそれは動きます。これもあなたのために働くことを願っています

<?php get_header(); ?>
<div class="wrapper">
    <section class="container-12">
    <?php if (have_posts()) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <div class="single-post-wrap col-8 Push-2">
            <div class="single-post-feat-img">
                <figure>
                    <?php the_post_thumbnail('news-thumb-single-post') ?>
                </figure>
            </div>
            <article>
                <h4><?php the_title(); ?></h4>
                <h6><?php the_date(); ?></h6>
                <hr>
                <p><?php the_content(); ?></p>

                <hr>
            </article>
            <div class="pagination-bottom">
              <?php twentyfourteen_post_nav(); ?>
            </div>
        </div>

    <?php endwhile; ?>
<?php endif; ?>
    </section>
    <div class="clear"></div>
    <div class="Push"></div>
</div>
<?php get_footer(); ?>

EDIT3

あなたのコードはあなたの問題とは何の関係もないようです、それはWordpressが次または前の投稿を得ていないようです、それはあなたのリンクが現れない理由です。あなたの問題をデバッグするためのステップ。各ステップの後、問題がまだ存在するかどうかを確認してください。

  • Debugをtrueに設定し、エラーがないか確認してください。 Wordpressのデバッグ も読んでください。

  • CtrlおよびF5を押して、ブラウザのキャッシュを消去します。また、キャッシュプラグインがインストールされている場合は、それらのキャッシュもクリアします。

  • すべてのプラグインを一つずつ無効にします。特定のプラグインを無効にした後、サイトを更新して問題が解決するかどうか確認してください

  • それが失敗したら、14のように バンドルされたテーマ の一つに切り替えてください。あなたのサイトをもう一度テストする

  • それでも問題が解決しない場合、Wordpressのコアファイルが破損している可能性があります。疑わしい場合は、データベース全体をバックアップしてから、WordPressを再インストールしてください。 Wordpress 3.9.2がリリースされたばかりなので、アップグレードしてください

編集4

あなたのコメントから、

私はwordpressのコアファイルを再インストールしました、私はすべてのプラグインを無効にし、私は14に切り替えましたが、何もしませんでした。それから私は別の1ワードプレスのインストールを展開しました。それはMAMPのせいではありません。私はそれがデータベースのせいだと確信しています。新鮮なワードプレスデータベースでは、前後の機能が完璧に動作するため

それは明らかにあなたのコードの問題ではありません。それはパーマリンクの問題、あるいはあなたが言ったようにDBの問題のようです。 WP_DBManager をダウンロードしてインストールし、データベースを修復して最適化して、問題が解決するかどうかを確認します。

編集5

私はトンネルの向こう側に光があるだけだと思います。 this post のユーザーも同じ問題を抱えていましたが、あなたの質問に対するこれらの答えはどちらもうまくいきませんでした。

自分の質問に対する答えから、ユーザーは犯人を見つけたようです。彼は投稿を作成するために一括作成者を使用しています、そしてそれは彼のページ付けを失敗させています。彼の答えをチェックしてください here

編集6解決済み

OPのコメントによると、問題は重複した投稿が原因でした。

1
Pieter Goosen

previous_post_link()関数呼び出しの3番目のパラメータはtrueに設定されています。これはすべての結果を現在の投稿と同じカテゴリの投稿に制限します。 3番目のパラメータをfalseに設定して(または完全に削除して)、違いがあるかどうかを確認してください。

3番目のパラメータが意図的なものである場合は、現在の投稿と同じカテゴリの投稿が実際にあることを確認してください。カスタム分類法を使用している場合は、カスタム分類名を5番目のパラメーターとして指定する必要があります。

previous_post_link( '%link', 'Pre Post', TRUE, '', 'my_custom_taxonomy' );
0
Philip Newcomer

すべてのページ付けコードをこれに置き換えて、CSSを一致させるようにクラスを変更するか、Twenty Twelvesテーマのstyle.cssファイルでこのコードに含まれるクラスを検索します。

<nav class="nav-single">
<span class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">' . _x( '&larr;', 'Previous post link', 'twentytwelve' ) . '</span> %title' ); ?></span>
<span class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '&rarr;', 'Next post link', 'twentytwelve' ) . '</span>' ); ?></span>
</nav><!-- .nav-single -->

基本CSS

.nav-previous {
    float: left;
    width: 50%;
}

.nav-next {
    float: right;
    text-align: right;
    width: 50%;
}

出典: 二十二十二

0
Brad Dalton