我正在尝试将我的常规php构建脚本集成到wordpress中。我以前被困在一个功能完美的地方,但不是在wordpress环境中。
在下面的代码中,我在ajax请求中得到了空白数组,而在myFunc中确实有结果(我通过在其中放入wp_send_json进行了测试)。
为了在wordpress中使用PHP全局变量,我需要更改什么吗?
$final = array();
function myFunc(){
global $wpdb;
global $final;
$sql = 'SELECT .......';
$result = $wpdb->get_results($sql);
if($wpdb->num_rows > 0){
foreach ( $result as $row ) {
$final[] = $row->pdate;
}
return true;
}
return false;
}
myFunc();
wp_send_json($final);
您可以使用以下语句从函数中获取更新的值。
$arr = array();
function myFunc($new_arr){
global $wpdb;
$sql = 'SELECT .......';
$result = $wpdb->get_results($sql);
if($wpdb->num_rows > 0){
foreach ( $result as $row ) {
$new_arr[] = $row->pdate;
}
}
//It will return updated array if result having rows.Otherwise return empty array.
return $new_arr;
}
$final = myFunc($arr);
if(!empty($final))//if block will be execute if myFunc doesn't return empty array.
{
wp_send_json($final);
}
这应该有效,但全局变量使用起来很糟糕,而且经常会发生冲突。我建议从函数中返回数组。
例如
function myFunc(){
global $wpdb;
$final = array();
$sql = 'SELECT .......';
$result = $wpdb->get_results($sql);
if($wpdb->num_rows > 0){
foreach ( $result as $row ) {
$final[] = $row->pdate;
}
return $final;
}
return false;
}
$myFuncReturn = myFunc();
if($myFuncReturn !== false){
wp_send_json($myFuncReturn);
}