サポート » 使い方全般 » <!–nextpage–>で挿入されるリンクURLにauthorIDとカテゴリIDを渡したい

  • 解決済 under

    (@under)


    シングルページのデザインを投稿者別に分けているので<!–nextpage–>で挿入されるリンクURLにもauthorIDとカテゴリIDを付けたいのですが、うまくいかず悩んでいます。

    <?php wp_link_pages(array(‘before’ => ‘<p> ‘, ‘after’ => ‘&author=<?php the_author_id() ?>&cat=<?php the_category_id() ?></p>’, ‘next_or_number’ => ‘next’)); ?>

    こうやれば読み出せると思ったんですが。。。

    <a href=”xxxxx”>次ページへ</a>&author=<?php the_author_id() ?>&cat=<?php the_category_id() ?></p>
    このようなコードが吐き出されIDがそれぞれ取得できていないようです。

    ググッて見たところquery_postsを使って代入するのかなと素人考えで思ったのですが、
    query_postsをwp_link_pagesに対してどういう風に使うのか解らず。。

    お分かりの方いらっしゃいましたらお力いただければとおもいます。

    使用しているWordpressのバージョン Version 2.3.3

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • デザインを分けるためだけなら、get_the_author_ID()get_the_category()で投稿者・カテゴリIDを取得するほうが簡単じゃないかと。

    ちなみに、現在1ページ目での判定はどうやっているんでしょうか?

    トピック投稿者 under

    (@under)

    >デザインを分けるためだけなら、get_the_author_ID()、get_the_category()で
    >投稿者・カテゴリIDを取得するほうが簡単じゃないかと。

    なるほど、これはurlで各IDを渡さなくても記事データから自動で判別してくれるということでしょうか?

    現在1ページ目(single.php)に入る際の判定としてin_categoryとswitchを併用しています。

    <?php if (in_category('1')||in_category('2')||in_category('3')||in_category('4')): ?>

    のようにin_categoryを使ってカテゴリごとにデザインを分け、その中で

    <?php switch ($author) {
    case "2": echo ~'; break;
    } ?>

    のようにswitchを使って投稿者ごとに表示するタイトルやデザインを細かく分けられるようにしています。

    ちなみにphp文のなかにphp文は入らないんだろうなと思って他のコード見ながら

    <?php wp_link_pages('before=&after=&amp;author=' . the_author_id()
    . ' &amp;cat= ' . the_category_id() . '
    &next_or_number=next'); ?>

    ↑こんな感じに書いたら

    43<p><a href="http://~/contents/?p=70&amp;page=2">次ページへ</a>

    こんなふうにIDはそれぞれ取得できたっぽいんですが、ID数字自体が
    リンクの外にテキストの羅列ででてしまってよくわからないことに。。。

    なるほど、これはurlで各IDを渡さなくても記事データから自動で判別してくれるということでしょうか?

    そういうことです。

    <?php
    $author_id = get_the_author_ID();
    $categories = get_the_category();
    $cat_id = $categories[0]->term_id;
    ?>

    single.phpの先頭で↑を記述し、必要なところで$author_id$cat_id を参照すれば、デザインの切り替えができるのではないでしょうか。

    <?php wp_link_pages('before=&after=&amp;author=' . the_author_id()
    . ' &amp;cat= ' . the_category_id() . '
    &next_or_number=next'); ?>

    IDがページリンクの前に出るのは、the_author_ID()the_category_ID()がその場でechoするためです。いずれにしても、$afterパラメータの内容はの後に追加されるので、URLに追加するためには使えません。

    トピック投稿者 under

    (@under)

    ご返信ありがとうございます。wp_link_pageで吐き出されるURLに値を追加するのにthe_author_ID(),the_category_ID()は使えないんですね。。
    この方法でやるのは無理がありそうなので教えていただいた

    <?php
    $author_id = get_the_author_ID();
    $categories = get_the_category();
    $cat_id = $categories[0]->term_id;
    ?>

    を使ってやる方法に挑戦してみようと思います。

    トピック投稿者 under

    (@under)

    ご教授いただいた方法色々試してみました。
    phpのどこかに下記コードが記述してあれば、ループ内に$author_IDを使うことで
    判別に利用できたのですが、ループ外だとうまく呼び出せていないようです。
    これはget_the_author_ID()自体がループ内でしか使えないことと関連しているのでしょうか。?

    <?php
    $author_id = get_the_author_ID();
    $categories = get_the_category();
    $cat_id = $categories[0]->term_id;
    ?>

    header.phpなどにも投稿者別に吐き出すデザインを分けて書いてますので
    ループ外で使いたいのですがループ外で使えるようにする
    カスタムの方法はわからなかったです。。。

    ご参考までに改変前のソース張らせていただきます。

    <?php get_header(); ?>
    
    <?php switch ($author) {
    case "2": echo '投稿者2のヘッドイメージ' ; break;
    case "3": echo '投稿者3のヘッドイメージ' ; break;
    case "4": echo '投稿者4のヘッドイメージ' ; break;
    default: echo 'そのほかの場合のヘッドイメージ'; break;
    } ?>
    
    <?php /* カテゴリが1,2の場合の記事表示 */if (in_category('1')||in_category('2')): ?>
    <?php if (have_posts()) : ?>
    
    <?php while (have_posts()) : the_post() ; ?>
    <?php the_content(); ?>
    <?php endwhile; else: ?>
    
    no content
    
    <?php endif; ?>
    <?php /* カテゴリが1,2以外の記事場合 */else: ?>
    
    <?php if (have_posts()) : ?>
    
    <?php while (have_posts()) : the_post() ; ?>
    
    <h2 class="<?php switch ($author) {
    case "2": echo '投稿者2の場合でカテゴリ1,2以外の場合のループ内ヘッドカラー' ; break;
    case "3": echo '投稿者3の場合でカテゴリ1,2以外の場合のループ内ヘッドカラー' ; break;
    case "4": echo '投稿者4の場合でカテゴリ1,2以外の場合のループ内ヘッドカラー' ; break;
    default: echo 'その他のヘッドカラー' ; break;
    } ?>"><?php the_title(); ?></h2>
    <?php the_content(); ?>
    <?php endwhile; else: ?>	
    
    no content
    
    <?php endif; ?>
    <?php endif; ?>

    link_pageで吐き出すURLに各IDを渡すのは難しそうなので、
    URLから判別をかけなくても記事デザインを判別できるようにしたいかんじなんですが、、
    うーん難しい。。。

    失礼しました。get_the_author_ID()が使えるのはループ内だけですね。
    シングルページのループ外なら、$post->post_author を参照すればOKだと思います。
    試してませんが、以下のような感じでどうでしょうか。

    $author_id = $post->post_author;
    $categories = get_the_category();
    $cat_id = $categories[0]->term_id;

    header.php 内でも使えるはずです。

    global $author_id, $cat_id;
    echo "author: $author_id, category: $cat_id";
    トピック投稿者 under

    (@under)

    >>yoshiさん

    ありがとうございます

    global $author_id, $cat_id;
    echo "author: $author_id, category: $cat_id";

    こちらどのように使うのかいまいち解らなかったのですが、headerに教えていただいたものを記述したところカテゴリ別に表示分けができるようになりました。
    ループの外で判別するにはどうすればいいんだろうという疑問がやっと解決です。。

    正直半分ぐらい理解できないままできたかんじなので改めて
    phpの参考書とにらめっこしてみようと思います。

    どうもありがとうございました!

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「<!–nextpage–>で挿入されるリンクURLにauthorIDとカテゴリIDを渡したい」には新たに返信することはできません。