问题描述

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

基本上,您在自定义内容之后附加帖子内容,然后返回结果。

Edit

正如 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’ post-type 的帖子,返回 $content,un-modified 。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。