Mapping Values From Your File with IF Statements
As WP All Import allows you to use PHP functions on your data, you can create your own custom PHP functions that can be passed values from your data file and return a certain result based on IF/Else conditions you set in your function.
Example A – If an Element is Empty
In this example, we’re checking to see if the element passed is empty or not, then returning a simple text string.
function is_element_empty($element) {
if(empty($element)) {
return "This element is empty.";
} else {
return "This element is not empty!";
}
}
Example B – If an Element Contains a Value
In this example, we’re passing two parameters: the element from the data file that we want to check and the value we want to search this element for.
function my_contains_function($element, $value_to_search_for) {
if (stripos($element, $value_to_search_for) !== false) {
return $element;
} else {
return;
}
}
If the element passed to this function contains the value to search for, then the element will be returned. Otherwise, an empty result will be returned.
Example C – If One Element Contains a Greater Value Than Another Element
In this example, we’re passing two parameters again, this time in the context of comparing two elements that contain prices.
function choose_price_to_return($price1, $price2) {
if ($price1 > $price2) {
return $price1;
} else {
return $price2;
}
}
If the first element passed has a greater value than the second element, the first element will be returned. Otherwise, the second element will be returned.
Import Any CSV, XML, or Excel to WordPress
- Any theme or plugin
- Images & galleries
- Custom fields
- Categories & tags
- Woo, ACF, Meta Box, JetEngine
Inline IF Examples
Here are some inline examples for WP All Import IF statements. These criteria for an IF statement are 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 in the examples above.
The [ELSE]<something>
part is optional
Number is equal to:
[IF({price[.=0]})]Zero[ELSE]Not Zero[ENDIF]
Number is greater than:
[IF({price[.>0]})]Greater than 0[ENDIF]
Text is equal to:
[IF({title[.='Foo']})]The title is Foo[ENDIF]
Text is not equal to:
[IF({title[.!='Foo']})]The title is not Foo[ENDIF]
Text is empty (see note below):
[IF({title[.='']})]The title is empty[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.
Text contains:
[IF({title[contains(.,’Foo')]})]Has foo[ENDIF]
Text length is:
[IF({title[string-length()>10]})]{title}[ENDIF]
IF/ELSE Example:
[IF({title[.='']})]The title is empty[ELSE]{title}[ENDIF]
OR Conditional
You can add an OR conditional with a simple pipe character:
[IF({title[.=''] | title2[.='']})]No title[ELSE]There's a title[ENDIF]
Further Reading:
IF Statements: http://php.net/manual/en/control-structures.if.php
Else Statements: http://php.net/manual/en/control-structures.else.php
Elseif Statements: http://php.net/manual/en/control-structures.elseif.php
Note: If you need some inspiration for writing your own custom IF/ELSE functions, a good resource to check out is stackoverflow.com, as there are lots of code discussions there.
Related Docs
Shows you how to use PHP functions via your import in WP All Import.
Use FOREACH loops to process and group multiple elements during import.
Learn how to use XPath 1.0 to retrieve, modify, and filter the import elements.