【问题标题】:Wordpress custom plugin shortcode wpdb unknownWordpress 自定义插件简码 wpdb 未知
【发布时间】:2013-07-05 18:21:01
【问题描述】:

我正在 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...

有什么想法吗?

【问题讨论】:

  • global wpdb 属于函数内部。
  • 天哪……没想到,你救了我的命! :)

标签: wordpress plugins


【解决方案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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多