web-dev-qa-db-ja.com

最初の段落の後においての画像をthe_contentに追加するにはどうすればよいですか。

私の問題:

この記事の最初の段落をこの画像の前に表示できるように、投稿のおすすめ画像をthe_contentに追加するフィルタを作成します。

私が基本的に達成したいこと:

<p>First Paragraph of the_content</p>
<img>The Post's Featured Image</img>
<p>The rest of the_content</p>

私は誰かが私を助けることができます。

前もって感謝します!

4
Anders

「the_content」フィルターを使用してこれを行うことができます。

add_filter( 'the_content', 'insert_featured_image', 20 );

function insert_featured_image( $content ) {

    $content = preg_replace( "/<\/p>/", "</p>" . get_the_post_thumbnail($post->ID, 'post-single'), $content, 1 );
    return $content;
}

もちろん、the_post_thumbnail()関数にオプションを追加して、使用するサムネイルのサイズなどを定義できます... http://codex.wordpress.org/Function_Reference/the_post_thumbnail

2
FlashingCursor

技術的に最も早い解決策はあなたのコンテンツにショートコードを使うことでしょう。それ以外の場合は、フィルタを使用して段落間で画像をダンプするための正規表現の適切なハンドルが必要です。

最良の方法はこれをfunctions.phpに追加することです。

<?php 

function featured_image($post) {
    if (has_post_thumbnail($post->id))
        the_post_thumbnail('large');
}

add_shortcode('featured_image', 'featured_image');
?>

コンテンツの最初の段落の後に[featured_image]と入力するだけです。

1
bgallagh3r

注意 -

これを行うには、ある種の正規表現マッチングを使用します。そのうちの一つです。投稿コンテンツの最初の段落の直後(つまり、最初のfunctions.phpタグの出現後)の変数$imgの内容を印刷するように、youtテーマの</p>ファイルにこのスニペットをドロップするだけです。

現在の投稿のサムネイル/注目画像の値を$ imgに渡すと、最初の段落の後にその画像が印刷されます。

// Goes into functions.php file
// Adds $img content after after first paragraph (!.e. after first `</p>` tag)
add_filter('the_content', function($content)
{
   $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
   $img = '<img src="'.$url.'" alt="" title=""/>';
   $content = preg_replace('#(<p>.*?</p>)#','$1'.$img, $content, 1);
   return $content;
});

最初の段落の後に変数を追加するように this を変更しました。

1
amit