サポート » 使い方全般 » 投稿内の画像に指定した外部リンクを取得

  • 解決済 cuyrzo

    (@cuyrzo)


    初歩的な質問で申し訳ありません。

    投稿内で画像に指定した外部サイトへのURLを取得したいのですが
    現在使用しているテーマでは下記のように画像を表示するよう設定されているため
    画像のリンク先を指定してもパーマリンクしか表示することが出来ません。

    <a href="<?php the_permalink();?>" target="_blank" ><img src="<?php echo catch_that_image(); ?>" alt="<?php the_title_attribute(); ?>" class="trt_thumbnail"/></a>

    投稿内で指定したURLを画像にリンクさせる方法は無いのでしょうか?

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • 状況がいまいちわからないので確認させてください。
    お使いのテーマは「Triton Lite」ですか?
    そして、トップページでアイキャッチ画像を表示しているリンク先を、
    記事ではなく別のリンク先にしたいということでしょうか?

    記事の詳細画面に入ってしまえば外部リンクは有効になっていると思いますが、
    具体的なご要望を書いていただけると助かります。

    トピック投稿者 cuyrzo

    (@cuyrzo)

    回答ありがとうございます。

    テーマは「Triton Lite」を使用しております。

    >アイキャッチ画像を記事ではなく別のリンク先にしたいということでしょうか?

    そう言うことになります。
    記事内で画像のリンク先を指定しているのですが、
    テーマ内で <?php the_permalink();?> に指定されているため表示することが出来ません。

    phpの知識も無いままFC2ブログからwordpressに変えてしまい
    未だローカルでの作成なのでブログをお見せできず分かり辛いと思いますが
    必要と思われるphpファイルをアップ致しましたのでよろしくお願い致します。

    http://kie.nu/GMf

    訪問者視点で考えると、
    トップページでアイキャッチ画像をクリックすれば記事が読める、というのは
    一連の習慣としてある(タイトルのクリックエリアが広がったイメージ)ので、
    ユーザビリティの観点からはあまりお勧めできないのですが・・・

    本文中の画像にすでにリンクが入っていると仮定して、
    その場合はアイキャッチ機能では対応できません。
    アイキャッチはあくまで「画像のみ」で本文とは関係がないからです。

    そこで、本文から画像とリンクを引っ張ってくるという方法になります。

    <a href="<?php the_permalink();?>" target="_blank" ><img src="<?php echo catch_that_image(); ?>" alt="<?php the_title_attribute(); ?>" class="trt_thumbnail"/></a>

    の部分を、下記のように変えてみてください。(未検証)

    <?php
    $content = get_the_content();
    preg_match("/<a[^>]+><img[^>]+><\/a>/", $content, $matches);
    echo "<span class=\"contentimg\">{$matches[0]}</span>";
    ?>

    これで、本文中の最初の画像部分が抜き出されて表示されるかと思います。
    大きさなどが違うと思いますので、.contentimg を使ってCSSで調節してみてください。

    トピック投稿者 cuyrzo

    (@cuyrzo)

    回答ありがとうございます。

    <?php
    $content = get_the_content();
    preg_match("/<a[^>]+><img[^>]+><\/a>/", $content, $matches);
    echo "<span class=\"contentimg\">{$matches[0]}</span>";
    ?>

    こちらのコードに変更してみたのですが、
    そうすると条件分岐のコードの為なのか
    ほとんどの画像が表示されない状況になってしまいました。

    ただ、表示された画像とリンクは狙い通りでした。

    ほとんどの画像が表示されない状況になってしまいました。
    ただ、表示された画像とリンクは狙い通りでした。

    表示されたのかされてないのかどちらでしょうか(笑)

    layout1.phpを編集したと思われますが、
    1つ目の該当箇所は、if ( has_post_thumbnail() ) 、
    つまりアイキャッチ画像が設定されている時。
    2つ目の該当箇所は、 elseif($photo = trt_get_images(‘numberposts=1’, true)) 、
    これはアイキャッチがない&本文中の添付ファイルがある時。
    3つ目の該当箇所は上記以外、となります。
    アイキャッチがないときの代替画像でもあるんでしょうか。

    以上から、アイキャッチが設定されている&本文にリンク画像がない場合は、
    私の書いたコードでは「アイキャッチ画像が表示されない」という状況になります。
    この状況が「画像が表示されなくなった」ということなのかなと。

    そもそも「本文中の画像を表示したい」ということなので、アイキャッチに頼ることをしなくなっています。

    トピック投稿者 cuyrzo

    (@cuyrzo)

    回答ありがとうございます。

    >表示されたのかされてないのかどちらでしょうか

    記事の書き方は全て同じはずなのですが、
    ごく一部のみ画像が表示され、ほとんどの画像が表示されていませんでした。

    アイキャッチ機能を使用してないのと、全ての記事にトップページ用の画像を用意するので
    不要と思われる部分を削除してみたのですが、全て画像が表示されなくなってしまいました。

    <?php if($photo = trt_get_images('numberposts=1', true)): ?>
    
                        <div class="imgwrap">
    			  <?php if($option["trt_diss_date"] == "1"){ ?><?php } else { ?>
                            <div class="date_meta"><?php the_time('Y'); ?>. <?php the_time('m'); ?>. <?php the_time('d'); ?></div>
                            <div class="block_comm"><?php $category = get_the_category(); echo $category[0]->cat_name; ?></div>
                            <?php } ?>
    
                    	<?php
    $content = get_the_content();
    preg_match("/<a[^>]+><img[^>]+><\/a>/", $content, $matches);
    echo "<span class=\"contentimg\">{$matches[0]}</span>";
    ?></div>
                              <?php endif; ?>
                         </div>

    それじゃ、そのif文を取って、本文から抽出する内容を確認してみましょう。
    上げていただいたソースを下記のように変更してみてください。

    <div class="imgwrap">
    			  <?php if($option["trt_diss_date"] == "1"){ ?><?php } else { ?>
                            <div class="date_meta"><?php the_time('Y'); ?>. <?php the_time('m'); ?>. <?php the_time('d'); ?></div>
                            <div class="block_comm"><?php $category = get_the_category(); echo $category[0]->cat_name; ?></div>
                            <?php } ?>
    
                    	<?php
    $content = get_the_content();
    preg_match("/<a[^>]+><img[^>]+><\/a>/", $content, $matches);
    print_r($matches);
    echo "<span class=\"contentimg\">{$matches[0]}</span>";
    ?></div>
                         </div>

    ここで Array() ~の中身が表示したい画像になりますが、これが取得されていなければ本文の書き方が違う可能性があります。
    表示されている内容と、表示されていない内容を比べてみてください。

    また、抽出条件に当てはまらない可能性もありますので、
    表示したいけどされない本文のHTMLを差し支えない程度に教えていただけたらと思います。

    トピック投稿者 cuyrzo

    (@cuyrzo)

    回答ありがとうございます。

    画像が表示されていない記事と表示されている記事を比べたところ、
    記事の中でリンク先を<?php the_permalink();?>としていた記事が表示されていないようでした。

    if文を使う必要がなくなったので
    先ほど頂いたifを外したコードで解決したように思います。

    素人の質問にお付き合い頂き大変助かりました。
    ありがとうございました。

    本文の中で <a href="< ?php the_permalink();?>"> ~ としていたんでしょうか?
    それだと抽出条件に合わなかったので、表示されませんね。
    また、PHPコードを書いてもそのまま表示されてしまいますし。
    リンク先をhttp:~などにしておけば問題なく表示するかと思います。

    上記で問題ないようでしたら、検証用のコード print_r($matches); は消してお使いください。

    以上で問題なければ解決済みにしてくださいね(^-^)ノ
    お疲れ様でした。

    トピック投稿者 cuyrzo

    (@cuyrzo)

    ありがとうございました。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「投稿内の画像に指定した外部リンクを取得」には新たに返信することはできません。