我正在使用wordpress编写自定义插件,我第一次使用短代码。 到目前为止我的短代码工作但现在我想在该短代码的函数中执行一个查询,以从特定的员工组ID中获取所有员工
[employee_group_tag group_id=2]
这是具有我的短代码功能的文件:
<?php
/*
Plugin Name: Employees
Plugin URI: xxx
Description: xxx
Version: 1.0
Author: xxx
Author URI: http://www.blabla.com
*/
global $wpdb;
function employee_shortcode_func( $atts ) {
extract( shortcode_atts( array(
'group_id' => '0',
), $atts ) );
// Alle werknemers ophalen adhv van group_id
$sql = 'SELECT * FROM wp_werknemers_employees WHERE employee_employee_group_id = ' . $group_id;
$results = $wpdb->get_results($sql);
return 'test';
}
add_shortcode( 'employee_group_tag', 'employee_shortcode_func' );
但是,当我运行它时,它会卡在$ wpdb-&gt; get_results($ sql)上,因为当我将其保留时,它会正确显示我的页面,但当我想用员工详细信息填写它时,我只得到了我的一半页。所以它“打破”
我试过(在我所有其他文件中都有效)
require_once("../../../wp-config.php")
但它不起作用......
它是否可能因为它在我的“主要”插件文件中而无效?因为在我所有其他文件中,当我使用require函数时,我可以使用wpdb ...
任何想法?
答案 0 :(得分:1)
来自PHP Manual:
在大多数情况下,所有PHP变量只有一个范围。此单一范围也涵盖包含和所需文件。例如:
$a = 1; include 'b.inc';
此处
$a
变量将在包含的b.inc
脚本中可用。但是,在用户定义的函数中,引入了本地函数范围。函数内使用的任何变量默认限制为本地函数范围。例如:$a = 1; /* global scope */ function test() { echo $a; /* reference to local scope variable */ } test();
最后一个示例不起作用,因为$a
未在函数范围内定义。
就像你的情况一样,为了工作,你必须使用:
function employee_shortcode_func( $atts ) {
global $wpdb;
// etc
}