5

誰かが私の問題を解決してくれることを願っています。友人のためにニュース Web サイトを構築しています。サイトはまとまり始めていますが、アイキャッチ画像にキャプションを追加する方法がわかりません。私は今日ウェブ全体を見てきました.phpシートにコードを追加する方法はたくさんありますが、何をしているのかわかりません.

そのコードを functions.php コードに追加しましたが、すべてがペアの形になります。

私は指を交差させ続けています。誰かが私に何をすべきかを入力することで私を助けることができます.

よろしくお願いいたします。

敬具

ジョン

4

2 に答える 2

10

まず、functions.php ファイルに次のコードをドロップする必要があります。

function the_post_thumbnail_caption() {
  global $post;

  $thumbnail_id    = get_post_thumbnail_id($post->ID);
  $thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment'));

  if ($thumbnail_image && isset($thumbnail_image[0])) {
    echo '<span>'.$thumbnail_image[0]->post_excerpt.'</span>';
  }
}

そのファイルの PHP の終了タグの直前に貼り付けます。PHP の終了タグがない場合は、貼り付けるコードの下に空の行がないことを確認してください。問題が発生する可能性があります。

次に、キャプションを表示したい場所に、次のように呼び出す必要があります。

<?php the_post_thumbnail_caption(); ?>

テンプレート ファイルのどこに呼び出しを配置すればよいかわからない場合は、 が呼び出されている場所を見つける必要があります<?php the_post_thumbnail(); ?>。テンプレート ファイルでその行を探し、キャプションを表示したい場所の近くに関数呼び出しを配置し​​ます。この関数はキャプションを span タグで自動的にラップするので、CSS でターゲットにすることができますが、関数呼び出しを任意のタグでラップすることもできます。

たとえば、テンプレート ファイルがこれまたは非常に類似したもので注目の画像を呼び出している場合:

<?php 
    if ( has_post_thumbnail() ) {
        the_post_thumbnail();
} ?>

次のようにキャプション呼び出しを追加します。

<?php 
    if ( has_post_thumbnail() ) {
        the_post_thumbnail();
} ?>
<?php the_post_thumbnail_caption(); ?>

他に説明が必要な場合はお知らせください。

于 2012-12-13T00:08:07.407 に答える
0

これは古い質問であることは承知していますが、WordPress で既に利用可能なフィールドを使用しながら、既に利用可能なデータを処理する (データベース呼び出しが少ない) 場合は、他の人が好むかもしれない別のソリューションを提供したいと思いました。

の出力はget_the_post_thumbnail()img タグ全体をキャプション フィールドから事前入力された alt タグを含む文字列として返すため、xml パーサーまたは正規表現を使用してイメージ タグの alt タグを簡単に抽出できます。

これは私がしました:

    <?php 
    if ( $featured = get_the_post_thumbnail( get_the_ID() ) ):

        echo $featured; 
        preg_match('/alt="(.*)"/i', $featured, $caption);

        if ($caption) {
            echo wpautop(array_pop($caption));
        }
    endif;
    ?>

最初に受け入れられた回答のような関数でそれが必要な場合は、 img タグを関数に直接渡します。

    function get_the_post_thumbnail_caption($img_tag) {
        preg_match('/alt="(.*)"/i', $img_tag, $caption);
        return array_pop($caption);
    }

そしてテンプレートで:

    $img = get_the_post_thumbnail( get_the_ID() ); // or any id
    echo wpautop( get_the_post_thumbnail_caption( $img ) );

「代替テキスト」フィールドにデータを入力すると、img タグの出力時にキャプション フィールドのデータが上書きされることに注意してください。必要に応じて、フィルターを使用してその動作をオーバーライドできます。

于 2013-10-17T18:51:44.990 に答える