尝试在我的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' );


如何设置此条件?

评论

在这种情况下:只要确保您的函数无论如何都会返回$ content(未修改时)。

#1 楼

只需使用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' );


这样,对于非“ property”帖子类型的帖子,将返回$content,且未修改。

评论


也可以在标题后添加内容;过滤器the_title是右钩子。

– Bueltge
2012年1月24日7:51

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

–詹森
2012年1月25日,0:02



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

–詹森
2012年1月25日,0:10



这是因为您没有为自定义帖子类型返回其他帖子类型的$ content。查看最新答案。

–芯片Bennett
2012年1月25日,0:55

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

–phatskat
2012年12月6日15:02

#2 楼

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参数(在这种情况下为property)。

此外,您可能想要看do_shortcode

评论


在这里游戏晚了,但是您要在is_singular('property')返回false的实例中返回一个空变量。如果您在那儿反转逻辑,而在这种情况下仅返回$ content,那么您将得到更清晰,更易读的代码。

–特拉维斯·韦斯顿(Travis Weston)
18年9月13日在13:50

也可以添加else或使用三元运算符。这是一个未经充分测试的示例,可以扩展。

–布拉德·道尔顿(Brad Dalton)
18/09/13在17:09