私の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' );
これを条件付きにするにはどうすればよいですか。
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' );
?>
基本的に、投稿コンテンツを追加しますafterカスタムコンテンツを作成し、結果を返します。
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' );
?>
この場合、カスタムコンテンツを追加しますafterタイトル。 (どちらでも構いません。質問で指定したものを使用しました。)
サンプルコードが機能しない理由は、条件が満たされた場合にのみ$content
を返すであるためです。条件にelse
として$content
を変更せずに返す必要があります。例えば。:
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
が変更されずに返されます。
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
条件付きタグは、単一の投稿が表示されているかどうかを確認し、この場合はpropertyである$ post_typesパラメータを指定できるようにします。
また、 do_shortcode
をご覧になるとよいでしょう。