Wordpress:更改帖子内容,即使它是空的

Wordpress: changing a posts content , even if it is empty

我正在尝试使用过滤器钩子“the_content”在单个页面(woocommerce,它的产品)中更改 Wordpress the_content 的 the_content,效果相当好 –仅当 post 中没有内容(没有详细描述的产品)时,我的主题甚至不显示内容容器,因此甚至从未调用 the_content。 我无权访问这些功能,我插入了代码片段——我必须在什么地方检查空内容,我怎么能改变它(我能吗?)而不更新数据库中的 post?

如果内容只包含一个字符,以下是有效的方法:


add_filter('the_content','produktbeschrieb',-1);

function produktbeschrieb($content) {
    $kategorien = get_the_term_list( $post->ID, 'product_cat', '', ', ') ;
    if ( is_singular() && in_the_loop() && is_main_query() ) {  
        if(str_contains($kategorien,'R&F Pigment Sticks')){
              return $content."<p>R&F Pigment Sticks® sind Ölfarben, die so viel Wachs enthalten, dass die Farbe in Stäbchenform gegossen werden kann. </p>";
    }
    else {
         return $content;}
}

解决方案可能在一定程度上取决于您使用的主题。但我已经测试了以下内容并且它对我有用。我相信默认情况下,如果没有描述,WooCommerce 不会添加描述选项卡,因此您需要在描述为空的产品时将其添加回来,然后通过使用设置描述为空时的值您已经编写的过滤器。

add_filter('the_content','produktbeschrieb',-1);
function produktbeschrieb($content) {
    $kategorien = get_the_term_list( $post->ID, 'product_cat', '', ', ') ;
    if ( is_singular() && in_the_loop() && is_main_query() ) {  
        if(str_contains($kategorien,'R&amp;F Pigment Sticks')){
              return $content."<p>R&F Pigment Sticks® sind Ölfarben, die so viel Wachs enthalten, dass die Farbe in Stäbchenform gegossen werden kann. </p>";
    }
    else {
         return $content;}
}

function woocommerce_empty_description_callback() {
    global $product;
    if( is_product() && empty( $product->get_description() ) ) {
        echo apply_filters( 'the_content', '' );
    }
}

function jt_woocommerce_default_product_tabs($tabs) {
    if ( empty( $tabs['description'] ) ) {
        $tabs['description'] = array(
            'title'    => __( 'Description', 'woocommerce' ),
            'priority' => 10,
            'callback' => 'woocommerce_empty_description_callback',
        );
    }
    return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'jt_woocommerce_default_product_tabs' );