3

我正在 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->get_results($sql) 上,因为当我离开它时,它会正确显示我的页面,但是当我想用员工详细信息填充它时,我只会得到我页面的一半。所以它“打破”

我试图做(这适用于我的所有其他文件)

  require_once("../../../wp-config.php")

但它不起作用...

它是否可能因为它在我的“主”插件文件中而无法工作?因为在我所有其他文件中,当我使用 require 函数时,我可以使用 wpdb ......

有任何想法吗?

4

1 回答 1

1

来自PHP 手册

大多数情况下,所有 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
}
于 2013-07-08T13:29:41.210 回答