I'm working with a custom PHP script that interacts with the Wordpress database and I've bumped into a small issue.
I've written a function that I would like to be able to run multiple times with different variable values sent to it each time it is run, the function is as such:
function ProductByCategory()
{
// Globalize the Wordpress Database Variable
GLOBAL $wpdb;
GLOBAL $term;
GLOBAL $default;
// Return All Products in the Category Set by $term
$return = $wpdb->get_results("SELECT term_id FROM wplz_terms WHERE name = '$term';");
// Properly Format the Result for an Array
$array = json_decode(json_encode($return),true);
// Flatten Array to Simple Array Function
function array_flatten_recursive($array) {
if (!$array) return false;
$flat = array();
$RII = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach ($RII as $value) $flat[] = $value;
return $flat;
}
$flat = array_flatten_recursive($array);
// Format for Next MySQL Query
$in = implode(',', $flat);
// Resolve Term ID to Object ID(s)
$return = $wpdb->get_results("SELECT object_id FROM wplz_term_relationships WHERE term_taxonomy_id IN ($in);");
// Properly Format the Result for an Array
$array = json_decode(json_encode($return),true);
// Refresh $flat Value
$flat = array_flatten_recursive($array);
// Format for Next MySQL Query
$in = implode(',', $flat);
// Resolve Products by the Resulting Object ID(s)
$return = $wpdb->get_results("SELECT p.id, p.post_title, pm.meta_value FROM wplz_posts p INNER JOIN wplz_postmeta pm ON pm.post_id=p.id AND pm.meta_key = '_price' WHERE p.id IN ($in) AND p.post_status = 'publish' ORDER BY p.post_title ASC;");
// Properly Format the Result for an Array
$array = json_decode(json_encode($return),true);
// Set Default Select Value
echo("<option>" . $default . "</option>");
foreach($array as $line)
{
echo('<option>');
echo($line['post_title']);
echo(' - ' . number_format($line['meta_value']) . 'THB');
echo('</option>');
}
}
And then in the area of the page where I want to run the function I simply put:
<!-- Select CPU Dropdown -->
<!-- Open HTML Select Structure -->
<div class="btn-group bootstrap-select"><select class="selectpicker form-control">
<?php
// Set Default Value for Select Drop Down Menu(s)
$default = "-- None Selected --";
// Resolve CPU Products
$term = "CPU";
// Run ProductByCategory Function
ProductByCategory();
?>
<!-- Close HTML Select Structure -->
</select></div>
For whatever reason, this function runs perfectly the first time that it is called. However whenever I try to redefine $term
and $default
and then call the function again with the updated variables it simply refuses to return anything. I'm rather confused because after quite a while of looking at it I'm not sure where things are going wrong, and thus I have submitted it to you fine people. Thank you for your help.