サポート » テーマ » ページリストの表示のタイトル・日付の順番を変更したい

  • 解決済 igarashi5620

    (@igarashi5620)


    お世話になります。
    新規でページを作成した場合、下記のタグを入れることにより、
    リスト表示が可能ですが、HTMLに出力した場合、順番を(1)日付(2)タイトルの順に表示したいのですが、どのように変更すればよいかが不明です。
    どなたかご指導をお願いします。

    <?php wp_list_pages('title_li=&exclude=3,6,10,12,56&
    sort_column=post_date&show_date=created'); ?>

    〇現在
    ・タイトル
    2009年8月2日

    〇変更後
    ・2009年8月2日
    タイトル

15件の返信を表示中 - 16 - 30件目 (全42件中)
  • ん~と、私ちょっと勘違いしていたかもしれません。

    新規で作成したページのタイトルを「トピックス」とした場合、
    そのページのリスト表示は「トピックスを更新しました」と変えたいのですが、全部ではなく、最新ページ5件表示の中の任意のもののみ変えたいのです。

    この事ですが、タイトルは都度違うのですかね?

    つまり、新規作成したときにページタイトルを任意につけて、その任意につけたタイトルに対して「を更新しました」を付加したい、と。

    これは、例えば新しく作成したページに1週間だけ「NEW」をつけたいとかと同じ意味でしょうか?それとも、あくまでも「任意」のページに文言を付加したいのでしょうか?

    前者であれば日付などをキーにして表示も可能かと思います。
    後者であればカスタムフィールドを使って特定のカスタムフィールドに文字が入っている場合のみ差し替えるなんて方法でどうでしょう?

    shokun0803 さん

    説明が分かりづらくてすみません。

    つまり、新規作成したときにページタイトルを任意につけて、その任意につけたタイトルに対して「を更新しました」を付加したい、と。

    これは、例えば新しく作成したページに1週間だけ「NEW」をつけたいとかと同じ意味でしょうか?それとも、あくまでも「任意」のページに文言を付加したいのでしょうか?

    前者であれば日付などをキーにして表示も可能かと思います。
    後者であればカスタムフィールドを使って特定のカスタムフィールドに文字が入っている場合のみ差し替えるなんて方法でどうでしょう?

    「を更新しました」を付加したい、ズバリそういうことです。
    で、この場合、どちらかといえば後者に該当するかと思います。
    カスタムフィールドに文字が入っている場合のみ差替えるなんて可能なんですか???
    う〜ん、、カスタムフィールドはDescriptionとkeywordでしか使用したことがありませんでした。
    ご指導お願いいたします。

    カスタムフィールドを使用したことがあるなら話は早いです。
    カスタムフィールドを表示する方法はご存知ですよね?

    で、一番簡単な方法は「new」なんて適当な名前のカスタムフィールドを作成して、文字を付加したいページにのみ「を更新しました」と記述することです。
    あとはカスタムフィールド「new」を調べて空じゃなかったらタイトルの後にカスタムフィールドの内容を表示してあげればご希望の表示になるかと思います。

    さらに、もう少しこだわった方法であれば、Custom Field Templateプラグインなどを使用してチェックボックスなどを作り、あとは上記とほぼ同じですが、カスタムフィールドを調べてonなら「を更新しました」をタイトルの後に追加で表示するように記述すればよいかと思います。

    前者の方法ならタイトルの後ろにつける文章はページごとに任意の文字が付加できるので用途は広がるかもしれません。後者の方法は不特定多数のユーザーが使用する場合など、使いやすさの面では勝手がいいかと思います。

    こんな案でどうでしょう?

    shokun0803 さん

    カスタムフィールドを表示する方法はご存知ですよね?

    これですかね?
    <?php the_meta(); ?>
    あとはこれ使って
    get_post_meta($post_id, $key, $single);
    いうカンジでいいんでしょうか?

    カスタムフィールドテンプレートのプラグインを使用する場合でも、
    上記のphpタグで、カスタマイズしたものを追加しないと表示されませんよね?
    概要はなんとなく理解出来たような。。

    あとはカスタムフィールド「new」を調べて空じゃなかったらタイトルの後にカスタムフィールドの内容を表示してあげればご希望の表示になるかと思います。

    ここのコードが難しそうな気がしますが?

    そうでもないと思いますよ。
    shokun0803 さんがおっしゃられてるのを、単調に実現するならば

    <?php
    $res = get_post_meta($post->id, ‘new’, ‘true’);
    if($res){
    echo $res;
    }
    ?>
    みたいな感じでしょうか?

    解説
    ・カスタムフィールド’new’を取得
    ・なにか値(または文字列)が入っていればそれを表示
     何も入っていなければ、出力無し

    kvex さん

    すみませんが、下記のコードをサイドバーに記述して試したのですが、
    任意のページのカスタムフィールドに「new」と入れ
    値を「を更新しました。」と入れましたが、サイドバーには何も記述されませんでした。
    下記コードの後に、リストを出力するためのタグが必要なのでしょうか?

    <?php
    $res = get_post_meta($post->id, 'new', 'true');
    if($res){
    echo $res;
    }
    ?>

    また下記コードに上記のコードを追加したいのですが、どこに追加すれば良いでしょうか?
    よろしくお願いします。

    <ul>
    <?php
    $postslist = get_posts('post_type=page&exclude=125,131');
    foreach ($postslist as $post) :
    setup_postdata($post);
    ?>
    <li>&raquo;<?php the_time('Y年m月d日'); ?><br /><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>

    任意のページのカスタムフィールドに「new」と入れ
    値を「を更新しました。」と入れましたが、サイドバーには何も記述されませんでした。

    ん~、ループの中に記述する必要があるかな?

    また下記コードに上記のコードを追加したいのですが、どこに追加すれば良いでしょうか?

    <ul>
    <?php
    $postslist = get_posts('post_type=page&exclude=125,131');
    foreach ($postslist as $post) :
    setup_postdata($post);
    $res = get_post_meta($post->id, 'new', 'true');
    ?>
    <li>&raquo;<?php the_time('Y年m月d日'); ?><br /><a href="<?php the_permalink(); ?>"><?php the_title(); ?>
    <?php if( $res ) { echo esc_attr($res); } ?>
    </a></li>
    <?php endforeach; ?>
    </ul>

    こんな感じ?ごめんなさいテストしてません。

    shokun0803 さん

    ありがとうございます。
    ですが、以前と同じく下記のようにしか表示されません。
    一番上のトピックスのところが「トピックスを更新しました。」と付加されると良いのですが?

    »2009年10月15日
    トピックス
    »2009年10月15日
    *******
    »2009年10月15日
    *******
    »2009年09月28日
    *******
    »2009年09月18日
    *******

    すみません、テストしてないもので・・・
    どこでしくじってるか試してもらえませんか?

    $res = get_post_meta($post->id, 'new', 'true');

    の直後に

    var_dump($res);

    とかしてもらってカスタムフィールドを取得しているか確認してみてください。

    shokun0803 さん

    ありがとうございます。
    返事が遅くなりすみません。

    上記のコードを入れたところ下記のとおり表示されましたが、
    取得されているのでしょうか?

    string(0) ""
    »2009年10月15日
    *******
    string(0) ""
    »2009年10月15日
    *******
    string(0) ""
    »2009年10月15日
    *******
    string(0) ""
    »2009年10月15日
    *******
    string(0) ""
    »2009年10月15日
    *******

    すみません・・・取得してませんね・・・

    $res = get_post_meta($post->ID, 'new', 'true');

    これでお願いします。

    shokun0803 さん

    ありがとうございます。
    今度は下記のとおり、カスタムフィールドの値が表示されました。
    ようやく表示が見れて感激です。

    string(0) ""
    》2009年10月15日
    *******
    string(0) ""
    》2009年10月15日
    *******
    string(0) ""
    》2009年10月15日
    *******
    string(24) "を更新しました。"
    》2009年10月15日
    *******を更新しました。
    string(0) ""
    》2009年10月15日
    *******

    後は、下記のコードを削除しての運用でよろしいでしょうか?
    var_dump($res);

    望みどおりの表示になっているのであればOKですよ;)
    var_dump()は変数の中身を表示するために記述しただけです。他にもprint_r()などとすることがあります。phpでコードを組むときは便利なので覚えておくといいですね!

    shokun0803 さん

    望みどおりの表示でした。
    大変お世話になりました。
    誠にありがとうございました。

    shokun0803 さん

    度々恐れ入ります。
    お世話になります。
    下記の投稿最新記事5件表示のコードを固定ページの記事内に使用したいのですが、可能でしょうか?
    また、記事の表示件数を変更するには、どの部分を修正すればよろしいでしょうか?
    要望は最大10件表示です。

    「exec-php」のプラグインの使用で出来ることは分かりましたが、
    実際に使用すると、トップページの内容しか反映されなく、それと同じ記事が5件表示される状態になります。
    すみませんが、ご指導よろしくお願いします。

    <ul>
    <?php
    $postslist = get_posts('orderby=post_date');
    foreach ($postslist as $post) :
    setup_postdata($post);
    ?>
    <li>&raquo;<?php the_time('Y年m月d日'); ?><br /><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>
15件の返信を表示中 - 16 - 30件目 (全42件中)
  • トピック「ページリストの表示のタイトル・日付の順番を変更したい」には新たに返信することはできません。