WordPressのフック/フィルターは、コンテンツの前またはタイトルの後に挿入します


29

functions.phpの投稿コンテンツの前にコンテンツを挿入しようとしています-通常のwpフックの使用方法は知っていますが、他の領域に挿入する方法はわかりません。

これを試してみましたが、他の投稿タイプのコンテンツを殺します:

function property_slideshow( $content ) {
 if ( is_single() && 'property' == get_post_type() ) {
    $custom_content = '[portfolio_slideshow]';
    $custom_content .= $content;
    return $custom_content;
    } 
}
add_filter( 'the_content', 'property_slideshow' );

これを条件付きにする方法は?

回答:


39

the_contentフィルターを使用するだけです。例えば:

<?php
function theme_slug_filter_the_content( $content ) {
    $custom_content = 'YOUR CONTENT GOES HERE';
    $custom_content .= $content;
    return $custom_content;
}
add_filter( 'the_content', 'theme_slug_filter_the_content' );
?>

基本的に、カスタムコンテンツの後に投稿コンテンツを追加し、結果を返します。

編集

Franky @bueltgeが彼のコメントで指摘しているように、プロセスは投稿タイトルでも同じです。the_titleフックにフィルターを追加するだけです:

<?php
function theme_slug_filter_the_title( $title ) {
    $custom_title = 'YOUR CONTENT GOES HERE';
    $title .= $custom_title;
    return $title;
}
add_filter( 'the_title', 'theme_slug_filter_the_title' );
?>

この場合、タイトルの後にカスタムコンテンツを追加することに注意してください。(どちらでも構いません。質問で指定したものを使用しました。)

編集2

サンプルコードが機能しないのは、条件が満たされた場合にのみ戻る$contentためです。条件付き$contentとして、変更せずに返す必要がありelseます。例えば:

function property_slideshow( $content ) {
    if ( is_single() && 'property' == get_post_type() ) {
        $custom_content = '[portfolio_slideshow]';
        $custom_content .= $content;
        return $custom_content;
    } else {
        return $content;
    }
}
add_filter( 'the_content', 'property_slideshow' );

このように、「プロパティ」投稿タイプで$contentはない投稿については、変更されずに返されます。


また、タイトルの後にコンテンツを追加することもできます。フィルタthe_titleは正しいフックです。
-bueltge

@ChipBennettの質問-カスタム投稿タイプのロジックのみでこれを行う方法-私はそれをラップしようとしましたif ( is_single() && 'property' == get_post_type() ) {}が、私にはうまくいきませんでした
ジェイソン

@ChipBennett-カスタムの投稿タイプで動作するようになりましたが、コンテンツは他の投稿タイプから消えます。上記の編集を参照してください。
ジェイソン

1
これ$contentは、カスタム投稿タイプ以外の投稿タイプに戻っていないためです。更新された回答を参照してください。
チップベネット

注:else {}ブロックは必要ありません-フォールバックリターンのみです。条件が満たされている場合、if()の戻り値は関数から抜け出します。if()を通過すると、フォールバック戻り値がヒットします。
phatskat

0
function property_slideshow( $content ) {
    if ( is_singular( 'property' ) ) {
        $custom_content = do_shortcode( '[portfolio_slideshow]' );
        $custom_content .= $content;
        }
        return $custom_content;
}
add_filter( 'the_content', 'property_slideshow' );

is_singular条件付きのタグをチェック単数形ポストが表示されている、あなたは、この場合にはプロパティである$ post_typesパラメータを指定することができます。

また、あなたは見たいかもしれません do_shortcode


ここではゲームに遅れていますが、is_singular( 'property')がfalseを返すインスタンスで空の変数を返しています。そこでロジックを反転し、その場合は単に$ contentを返すと、よりクリーンで読みやすいコードになります。
トラビスウェストン

elseを追加するか、三項演算子を使用することもできます。拡張可能な完全にテストされていない簡単な例です。
ブラッドダルトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.