web-dev-qa-db-ja.com

前後の投稿リンクにカスタムフィールドを追加する

次の投稿ボタンと前の投稿ボタンにカスタムフィールドを表示させようとしていますが、何らかの理由でカスタムフィールドが空白になることはありません。私のコードです。

<div id="next-prev-links">
      <?php

      $previous_post = previous_post_link('%link', ''.$image_prev.'', TRUE);
      $next_post = next_post_link('%link',''.$image_next.'', TRUE);
      $image_prev = get_post_meta( $previous_post->ID, 'image', true);
      $image_next = get_post_meta( $next_post->ID, 'image', true);
      ?>

      <?php if ( $image_prev != '' ) : ?>
        <img src="<?php echo $image_prev; ?>" alt="" />
      <?php endif; ?>

      <?php if ( $image_next != '' ) : ?>
        <img src="<?php echo $image_next; ?>" alt="" />
      <?php endif; ?>

      <?php previous_post_link('%link', 'Previous post', TRUE); ?>
      <?php next_post_link('%link', 'Next post', TRUE); ?>
</div>
3
Jeremy Love

これがあなたがやろうとしていることのためのコードです(ポストカスタム値へのアクセス):

<?php    
global $post;

    $prev_post = get_adjacent_post();
    $next_post = get_adjacent_post( false, '', false );
    $prev_post_id = $prev_post->ID;
    $next_post_id = $next_post->ID;
    // this should, according to your code above, be the http://example.com/your/img.jpg string
    $prev_img_path = get_post_custom_values( 'your_key_name', $prev_post_id );
    $next_img_path = get_post_custom_values( 'your_key_name', $next_post_id );
    $prev_def_path = get_bloginfo('stylesheet_directory').'/default_next_img_inside_theme_folder.jpg';
    $next_def_path = get_bloginfo('stylesheet_directory').'/default_prev_img_inside_theme_folder.jpg';

    echo '<img src="'.!empty($prev_img_path) ? $prev_img_path : $prev_def_path.'" alt="Permalink to previous post" />';
    echo '<img src="'.!empty($next_def_path) ? $next_def_path : $next_img_path.'" alt="Permalink to next post" />';
?>
2
kaiser

Postオブジェクトではなく、*_post_link()関数が返すリンク文字列からIDを取得しようとしていると思います。

次の/前の記事の完全なオブジェクトが必要な場合は、 get_adjacent_post() を使用してください。

PS WP_DEBUGを有効にして 開発することをお勧めします。型の不一致を見つけやすくなります。

0
Rarst