サポート » 使い方全般 » 本文に入ってしまうhtmlのマークアップを外したいです。

  • 解決済 aki___

    (@aki_)


    通販サイトの表層を、wordpressで作っています。
    商品個々の記事とは別に、「新着情報」というカテゴリーをつくり、
    記事タイトルに「●●●●(商品個々の記事)が再入荷しました」
    といった文言を入れ、
    記事本文にその●●●●のページのアドレスをフルパスで入れ、トップページで

    <ul>
                    <?php
                    $posts = get_posts("numberposts=4&amp;category=5&amp;orderby=post_date");
                    foreach ($posts as $post):
                    setup_postdata($post);
                    ?>
                    <li><a href="<?php the_content(); ?>"><?php the_title(); ?></a></li>
                    <?php endforeach; ?>
                </ul>

    とリスト表示したいと思ったのですが、the_content部分が
    <P>http://(アドレス)</P>
    となってしまうため、<a>タグが機能しません。
    Pタグを外して表記させるために良い方法はありませんでしょうか。

    (ちなみに、商品個々の記事でカスタムフィールドを作り、その部分をトップページで読み込むのは、

    ■記事自体を日付等含め更新しないと順序が更新されない。
    ■更新すると、記事の並びが変わってしまうし、細かい管理はできない

    という実際運用する方で無理そうだという事になり、新着情報のみのカテゴリーを作成することになりました。)

    もし良い方法がありましたら、ご教授ください。どうぞよろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    <li><a href="<?php the_content(); ?>"><?php the_title(); ?></a></li>

    根本的に、この書き方がまずいです。the_content() は HTML が返されるものなので、それを href 要素の中に入れるというテンプレートを作ると、当然不正な出力になります。

    投稿本文に URL しか入れないのならば、かわりに the_excerpt() を使ってください。こちらは HTML ではなく単なるテキストが返されることが保証されているため、正当な HTML が生成できると思います。

    ただし、投稿本文に URL 以外のものを入れてしまうと相変らず不正になりますから、厳密には以下のように clean_url() を通して、その結果が空白でなければ出力するような形にすべきです。

    <ul>
      <?php
      $posts = get_posts("numberposts=4&amp;category=5&amp;orderby=post_date");
      foreach ( (array) $posts as $post):
        setup_postdata($post);
        $url = clean_url(get_the_excerpt());
        if ($url) { ?>
          <li><a href="<?php echo $url ?>"><?php the_title(); ?></a></li>
        <?php }
      endforeach; ?>
    </ul>
    トピック投稿者 aki___

    (@aki_)

    lilyfan様

    お教えいただいた通りで、無事希望通り表示されるようになりました。
    また、以前も質問にご回答頂いたことがありました。本当にありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「本文に入ってしまうhtmlのマークアップを外したいです。」には新たに返信することはできません。