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' );

我如何将此作为条件?

Answers:


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 2012年

@ChipBennett问题-如何仅针对自定义帖子类型使用逻辑进行此操作-我尝试将其包装,if ( is_single() && 'property' == get_post_type() ) {}但对我而言不起作用
Jason

@ChipBennett-我可以在自定义帖子类型上使用它,但是内容将从任何其他帖子类型中消失。请参阅上面的编辑。
杰森

1
这是因为您不返回$content除自定义帖子类型以外的其他帖子类型。查看最新答案。
Chip Bennett 2012年

只是一个注释-您不需要else {}块-只是后备返回。如果满足条件,则if()中的返回将使您退出函数,如果您使其超过if(),则将触发后备返回。
phatskat 2012年

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或使用三元运算符。这是一个未经充分测试的示例,可以扩展。
布拉德·道尔顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.