删除WooCommerce产品标题中圆点和冒号后的文本

时间:2020-06-08 作者:Pardaigle

在我的产品标题中,我想删除第一个“点”之后的所有文本内容或冒号“:”。

例如,我想转换:Theodore Deck:The Peter Marino Collection=>Theodore Deck

我从中尝试了此代码this article但没有成功。

function explode_parts($title, $id){
    $parts = explode(\' : \', $title);
    $before = $parts[0]; //before the :
    $after = $parts[1]; //after the : 
    return (whatever);
}

add_filter(\'the_title\', \'explode_parts\');
谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Sabbir Hasan 整理而成

尝试使用以下代码:

add_filter(\'the_title\', \'mod_product__title\', 10, 2);
function mod_product__title($title, $id) {

    if( is_product() ) {
        if(preg_match(\'/[^(:|.)]*/\', $title, $matches)){
            return trim($matches[0]);
        }else{
            return $title;
        }
    }
    return $title;
}
这里我使用regex来匹配.: . Regex将只匹配第一个匹配项,并返回其前面的文本。那我就用trim() 以除去任何额外的尾随空间。如果它与任何内容都不匹配,那么它将返回完整的标题。

更新以下代码检查它是管理列表还是前端,并相应地修改标题

add_filter(\'the_title\', \'mod_product__title\', 10, 2);
function mod_product__title($title, $id) {
    global $pagenow;
    if ( $pagenow != \'edit.php\' && get_post_type( $id ) == \'product\' ) {
        if(preg_match(\'/[^(:|.)]*/\', $title, $matches)){
            return trim($matches[0]);
        }else{
            return $title;
        }
    }
    return $title;
}

相关推荐

删除空的TITLE_TAG,找到h1标题并回显

我想在页脚的版权声明中重复Wordpress页面的标题,如© 2020 \"Review: Winter\'s Sunshine\": The Berlin Review Magazine我过去简单使用的代码片段是:© <?php echo date(\"Y\"); ?> \"<?php echo get_the_title(); ?>\": [Website Name] 它完全符合我的需要。不幸的是,由于一个奇特的页面生成器,我目前正在开发的网站并不总是在h1标题中使用