如果title包含字符串';aaa'';bbb';或者,';ccc';替换字段{ca


if title contains string 'aaa','bbb' or ,'ccc' replace field {category[1}

你好,堆叠溢出之神,

现在,我讨厌成为"那个没有正确搜索的人",但我遇到了一个需要解决的问题,由于我缺乏编码技能,我找不到可以解决的解决方案,我的知识几乎没有触及表面。

事情是这样的。

我正在使用一个工具将提要导入我的网站(WP all import)作为woocomerceproducts。但在分类中,饲料供应商犯了错误,我想在每次偶然发现错误时都不给他们发电子邮件的情况下解决这些错误。

即:标题包含挎包、包、手包等单词,但该产品在CSV或XML中被归类为"珠宝>耳环"。

导入工具会问我在哪里可以找到产品类别,我将其指向节点{category[1]}

但当类别丢失或有错误时,我希望它检查某些单词的标题,如果存在,则将其值更改为找到的单词。

something like: 
[if ({title[1]}contains "satchel") {
    category = "bags > satchel",
} else if ({title[1]} contains clutch) {
    category = "bags > clutch",
} else {
    category = {sub_category[1]} #the normal value if nothing was found 
}]

我就是找不到可以组合格式的部分。我可能需要开发一个功能,我可以扩展该功能,仅根据标题中某些单词的存在来生成类别,但也许当我变得更好时,这将是一个选择。

我希望我能够就这个问题提供一个清晰的观点。"[]"之所以存在,是因为插件希望输入代码,而不是{fieldname[1]},下面的另一个例子:

以下是我能够解决的一个问题的示例:我需要将"0/3个月/1/2个月"之类的值替换为"0-3个月/11-2个月",然后将斜线"/"替换为管道"|",以便wordpress将其识别为单独的值。

[str_replace("/","|",
   str_replace("0/3","0-3",
     str_replace("1/2","1-2",
       str_replace("3/6","3-6",{size[1]}))))]

这些字段也可以用来调用函数,但只能在插件的"pro"版本中使用。

非常感谢您的帮助,提前表示感谢。

您可以使用strpos。

示例:

if (strpos($title, "satchel") !== false) {
    $category = "bags > satchel";
}

因此,经过一个下午的摸索、测试,我在朋友的帮助下想出了一个解决方案。

Wp All Import不允许直接从字段本身自定义php,但它支持自定义php函数,并在导入配置页面的底部提供了这些函数的编辑器。我做了以下事情:

<?php

    //Checks Title for keywords and 
    //uses those to create categories
    //We are using our own Main categories so only 
    //sub and subsub categroies need to be created.
    //Call function
    [get_subcat_from_title({title[1]},{category[1]})]
    //Function
    function get_subcat_from_title($title,$defaultcat)
    {    
        if (strpos($title,"Satchel") !== false) {   
            $cat = "Tassen";    
        } elseif (strpos($title,"Travel") !== false) {      
            $cat = "Tassen";     
        } elseif (strpos($title,"Gusset") !== false) {      
            $cat = "Tassen";        
        } else { 
            $cat = $defaultcat;
        }
        return $cat;
    }

    //Checks Title for keywords and uses those to create subcategories
    //Call Function
    [get_subsubcat_from_title({title[1]},{sub_category[1]})]
    //Function
    function get_subsubcat_from_title($title,$defaultcat)
    {    
        if (strpos($title,"Satchel") !== false) {   
            $cat = "Satchel";   
        } elseif (strpos($title,"Travel") !== false) {      
            $cat = "Travel";     
        } elseif (strpos($title,"Gusset") !== false) {      
            $cat = "Gusset";        
        } else { 
            $cat = $defaultcat;
        }
        return $cat;
    }
?>

在Taxonomies,Tags,Categories选项中,我们可以创建自己的分层顺序,如下所示:

[main category]
+[sub category]
++[sub sub category]

主类别字段被赋予了一个我们用作主类别的名称。子类别由SUBCAT函数填充子类别由SUBSUBCAT 函数填充

通过这种方式,它将创建一个以我们自己的名字命名的,一个名为"Tassen"的child(如果存在任何关键字),以及一个以特定关键字

通过这种方式,当没有提供正确的类别时,我可以使用各种语句来扩展函数。

感谢@sebastianForsberg的回复。

我希望这能帮助将来遇到类似问题的人。。