Here are some example WP All Import [IF] statements. The criteria for an IF statment is written in XPath 1.0 syntax and can use XPath functions. Although powerful, XPath syntax can be quite complex. In many cases it might be easier to use a PHP function as shown here.
Note: The [ELSE]<something>
part is optional
[IF({price[.=0]})]Zero[ELSE]Not Zero[ENDIF]
[IF({price[.>0]})]Greater than 0[ENDIF]
[IF({title[.='Foo']})]The title is Foo[ENDIF]
[IF({title[.!='Foo']})]The title is not Foo[ENDIF]
[IF({title[.='']})]The title is empty[ENDIF]
[IF({title[contains(.,’Foo')]})]Has foo[ENDIF]
[IF({title[string-length()>10]})]{title}[ENDIF]
[IF({title[.='']})]The title is empty[ELSE]{title}[ENDIF]
Note: You might have seen examples using not(text())
to check for empty fields. While this is valid XPath syntax, it seems to fail on some servers. The reasons are unclear. Just use the Text is empty syntax above instead.
Hi there @m-thomson,
Thanks for sharing this, I've found it really useful! 😃
Am I right that it's not possible to use native XPath functions in WP All Export's 'Custom XML Feed'?
It doesn't seem to work when I try. I've followed your advice and tried to find a solution with a PHP function instead (example A here). However, there isn't a good example for when you want to return a different value from your import file depending on whether another field in the file is empty or not. In other words, I cannot work out how to recreate this IF/ELSE statement with PHP:
[IF({value_1[.='']})]{value_2}[ELSE]{value_3}[ENDIF]
I don't know if you're involved with WP All Import, but it would be great to have an example of that in the documentation as well.
Anyway, thanks again for this great resource!