我有一个PHP脚本,我已经从互联网上的例子中放到了一起。
我对php不是很熟悉,而且我收到了错误。
我正在尝试获取我的Wordpress博客的最后发布日期,以便我的程序显示我们为用户提供重要信息的最后日期。
这是我的代码:
<?php
function lpd_post_date( $date_format, $echo, $modified_date = false )
{
$dbhost = 'xxx';
$dbuser = 'xxx';
$dbpass = 'xxx';
$dbname = 'xxx';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);
// include 'config.php';
// include 'opendb.php';
global $wpdb;
$date_col = 'post_date';
if ( $modified_date ) $date_col = 'post_modified';
$sql = " SELECT $date_col FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'post' ORDER BY $date_col DESC LIMIT 1 ";
$mysql_date = $wpdb->get_var( $sql );
if ( ! $date_format ) $date_format = get_option('date_format');
$formatted_date = mysql2date( $date_format, $mysql_date );
echo $formatted_date;
mysql_close($conn);
}
?>
我收到此错误:
致命错误:调用成员函数 在一个非对象中 /homepages/38/d157689362/htdocs/suburban/updates/last/last.php 在第21行
有人能帮帮我吗?我在第21行失去了它的作用:
$ mysql_date = $ wpdb-&gt; get_var($ sql);
非常感谢任何帮助!
谢谢!
答案 0 :(得分:1)
您正在使用全局变量$wpdb
,它应该是某个类的实例,但是当您使用它时,它是未定义的。 $wpdb
应在调用函数lpd_post_date
之前进行实例化。您将使用以下内容实例化$wpdb
:
$wpdb = new myClass(); //myClass is the class name of your class
答案 1 :(得分:0)
这个错误确实是因为没有定义$ wpdb。
最好将此代码放在WP为您的活动主题创建的WordPress functions.php文件中(在'wp-content / themes / active_theme_name / functions.php'中找到 - 如果我是默认主题'默认'回想一下)。 $ wpdb已在此文件中定义,您编写的代码应该在那里工作(取出<?php
和?>
,然后将函数放在文件中的其他位置。然后,您可以通过以下方式调用您创建的函数:
将include_once('_path_to_active_theme/functions.php');
放在脚本的顶部,然后在新的php文件中调用该函数:
$ return_value = lpd_post_date($ date_format,$ echo,$ modified_date);
//使用$ return_value
在主题UI代码中调用该函数 - 当然,如果您尝试将值lpd_post_date返回值放在UI的某个位置
以下内容可能有所帮助:
http://wordpress.org/support/topic/get_var-on-a-non-object-wpdb http://codex.wordpress.org/Theme_Development#Functions_File
如果您尚未阅读整个Theme_Development第二个链接,那绝对是一个好主意。