web-dev-qa-db-ja.com

Wp excerpt()からではなくwp content()からのみテキストを取得するにはどうすればいいですか?

私は現在WordPress 3.5でウェブサイトを開発しています、そして/私は ポストテキスト(テキストのみ、画像は含まない) at アーカイブページ を検索する必要があります。 wp_excerpt()メソッドで問題なく取得できます。しかし、私にとっての主な問題は、正確なテキストレイアウトが得られないことです。 wp_excerpt()メソッドは、余分なスペースや改行をすべて無視したテキストを返します。私は何をすべきか? 正確なレイアウトでテキストを投稿する wp_content()メソッドから取得できる場合のみ取得します。ご協力ありがとうございます。

4
Thiha Maung

あるいはもっと簡単です。

echo wp_strip_all_tags( get_the_content() );

使用して:

  • get_the_content()

    投稿内容を取得します。 (ループ内で使用する必要があります)

    the_content()との重要な違いは、get_the_content()は 'the_content'を通してコンテンツを渡さないことです。これはget_the_content()がとりわけ動画を自動埋め込みしたりショートコードを展開したりしないことを意味します。

  • wp_strip_all_tags()

    スクリプトやスタイルを含むすべてのHTMLタグを正しく取り除きます。

8
andy

テキストのみを取得するネイティブのWordPress関数はありませんが、WordPressのフィルタと正規表現コードを使用してこの問題を解決することができます。

フォーマットされていないテキストを取得するには、 get_the_content()関数 を使用します。すべてのフィルタを適用するには、この方法を使用します(codex: http://codex.wordpress.org/Function_Reference/the_content#Alternative_Usage を参照)。

$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;

フィルタを適用する前に、カスタムの変更を加えるためのスペースがあります。画像を削除するこちらです:

$content = get_the_content();
$content = preg_replace('/(<)([img])(\w+)([^>]*>)/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

Preg_replaceコードのソース: http://www.phpzag.com/php-remove-image-tags-from-a-html-string-with-preg_replace/ /

使用されている場合は、ショートコードも削除する必要があります。これはpreg_replaceでも行えますし、グーグルでも見つけられるでしょう。

4
david.binda

私はこの記事の他の回答からの結果を組み合わせて画像や音声などを取り除きましたが、フォーマットは維持しました。最初にget_the_contentを使ってコンテンツを取得し、次にそれを "the_content"フィルタに渡して書式設定などを追加し、次にphp'sstrip_tagsを使用して限られた数のタグのみを許可します。

strip_tags(apply_filters('the_content',get_the_content()),"<p><a><br><b><u><i><strong><span><div>");

1

次のコードは私にとっては完璧に動作します。これをテーマのfunctions.phpファイルに追加するだけです。

// Hook : to get content without images
add_filter('the_content', 'wpse_get_content_without_images');

function wpse_get_content_without_images() {
    $content = get_the_content();
    $content = preg_replace( '/<img[^>]+./', '', $content );
    echo $content;
}

その後、echo the_content();を使用して投稿コンテンツを標準的な方法で取得します。

1
ITstudios

これは、ギャラリーのコンテンツを削除し、コンテンツのみを取得するためのコードです。

$content = get_the_content();
        $content = preg_replace('/\[gallery.*ids=.(.*).\]/', "", $content);
        $content = apply_filters('the_content', $content);
        $content = str_replace(']]>', ']]&gt;', $content);
        echo $content;
0
Rhinotheme