Wordpress |将功能/过滤器应用于特定模板(特色图像功能过滤器)

时间:2016-09-05 11:25:53

标签: php wordpress wordpress-theming

我的tweaks插件中有以下代码。

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

function sqhse_news_featimgmove( $content ) {
    $content = preg_replace( "/<\/p>/", "</p>" . get_the_post_thumbnail($post->ID,'post-single', array( 'class' => "img-fluid img-rounded w-100")) . "<div class='clearfix' style='margin-bottom:10px;'></div>", $content, 1 );
    return $content;
}

它的作用: 它在第一段之后添加了特色图像,这非常棒,而且正是我所需要的。

问题:代码适用于single.php(非常适合我需要的地方),但它也适用于single-training_courses.php(自定义帖子类型的模板)。

需要的帮助:将代码应用于single.php而不是任何子单一模板,例如single-training_courses.php

这可以实现吗?如果是这样我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:0)

您可以使用get_post_type() WordPress函数并将您的代码包装在if语句中,如下所示:

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

function sqhse_news_featimgmove( $content ) {
    if( get_post_type() == 'post' ) {
        $content = preg_replace( "/<\/p>/", "</p>" . get_the_post_thumbnail($post->ID,'post-single', array( 'class' => "img-fluid img-rounded w-100")) . "<div class='clearfix' style='margin-bottom:10px;'></div>", $content, 1 );
        return $content;
    }
    return $content;
}

答案 1 :(得分:0)

您正在使用的过滤器the_content正如您所发现的那样适用于所有内容区域。您需要添加条件以检查您所在的帖子类型并进行相应调整。我的建议是使用is_singular()

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

function sqhse_news_featimgmove( $content ) {
    if ( is_singular( 'post' ) ) { 
        $content = preg_replace( "/<\/p>/", "</p>" . get_the_post_thumbnail($post->ID,'post-single', array( 'class' => "img-fluid img-rounded w-100")) . "<div class='clearfix' style='margin-bottom:10px;'></div>", $content, 1 );
    }

    return $content;
}

处理过滤器时,请确保始终返回值。如果您有条件,例如将return语句保留在它之外。

https://codex.wordpress.org/Function_Reference/is_singular