注意:未定义的变量 - WordPress / Parse Server 插件 - PHP 错误
Notice: Undefined variable - WordPress / Parse Server Plugin - PHP Error
因此,我正在为基于 this Github project 的客户端构建一个 WordPress 插件,这将允许您从 WordPress 中提取帖子。
基本上我把这个项目拉下来了,我有几个错误。我一直在一次对付他们一个。关于这堆中的第一个错误,我之前有过 。我听取了用户 'dipmala' 的建议并解决了该问题,但现在当我尝试 运行 'sync' 函数时出现了这个新问题。
Notice: Undefined variable: options in
/opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/WP-Plugin/includes/class-wp-parse-api-admin-settings.php
on line 42
看来同步失败了。我认为我实施的修复之一导致未分配变量之一。
(更新 - 我查看了 'cale_b' 提供的 link,但我确实相信真正的下划线问题超出了未定义的变量,如 'benito' 所述,在他的回应。我想解决下划线问题,而不仅仅是回避错误。)
如果有人能提供一些关于如何解决此问题的见解,以便插件成功同步到 Parse Server 实例,我将不胜感激。
解析服务器由 Back4App 托管。
我已经发布了来自 'class-wp-parse-api-admin-settings.php' here on PasteBin and below...
的代码
<?php
if (!defined('WP_PARSE_API_PATH')) die('.______.');
if (is_admin()){ // admin actions
add_action('admin_menu', 'wp_parse_api_menu');
add_action('admin_post_wp_parse_api_sync', 'wp_parse_api_sync');
function wp_parse_api_menu() {
add_options_page('Parse Api Options', 'Parse Api', 'manage_options', 'wp-parse-api-options', 'wp_parse_api_page');
add_action('admin_init', 'wp_parse_api_admin_init');
}
function wp_parse_api_admin_init() {
//register our settings
register_setting('wp-parse-api-settings-group', 'app_id');
register_setting('wp-parse-api-settings-group', 'app_masterkey');
register_setting('wp-parse-api-settings-group', 'app_restkey');
register_setting('wp-parse-api-settings-group', 'app_url');
register_setting('wp-parse-api-settings-group', 'app_push_notifications');
register_setting('wp-parse-api-settings-group', 'object_name');
register_setting('wp-parse-api-settings-group', 'lang');
}
function wp_parse_api_page() {
require WP_PARSE_API_PATH .'includes/class-wp-parse-api-admin-settings-template.php';
}
function wp_parse_api_sync() {
$numberposts = 10;
if (isset($_GET['wp-parse-api-page'])) {
$_GET['wp-parse-api-page'] = (int)$_GET['wp-parse-api-page'];
if ($_GET['wp-parse-api-page'] < 1) $_GET['wp-parse-api-page'] = 1;
$options = array(
'numberposts' => $numberposts,
'offset' => ($_GET['wp-parse-api-page'] * $numberposts) - $numberposts,
);
}
$wp_posts = get_posts($options);
if (count($wp_posts) == 0) {
wp_redirect( 'options-general.php?page=wp-parse-api-options' );
exit;
}
foreach ($wp_posts as $wp) {
if ($wp->post_status != 'publish') continue;
$post = WpParseApiHelpers::postToObject($wp->ID);
$q = new parseQuery(WP_PARSE_API_OBJECT_NAME);
$q->whereEqualTo('wpId', $wp->ID);
$q->setLimit(1);
$result = $q->find();
if ($result->results[0]) {
$post->update($result->results[0]->objectId);
} else {
$post->save();
}
}
++$_GET['wp-parse-api-page'];
$url = $_SERVER['PHP_SELF'];
foreach ($_GET as $k=>$v):
$qs = (strpos($url, '?') === false ? '?' : '&');
$url .= sprintf("%s%s=%s", $qs, $k, $v);
endforeach;
//wp_redirect( $url );
echo "Page:". ($_GET['wp-parse-api-page']-1) ."<script> setTimeout(\"document.location='$url'\", 1000); </script>";
exit;
}
}
你的块中的代码:
if (isset($_GET['wp-parse-api-page'])) {
// ...
}
未调用。所以显然当你到达 get_posts($options)
时 $options
不存在。尝试将其放在:
之后
else {
$options = array();
}
那么您可能还想调查为什么未定义 wp-parse-api-page
GET 参数。正如有人回答您之前的问题,您应该在 wp-parse-api-page=
之前加上 ?或 & 后跟 URL 中的一个数字。您必须注意这一点,尤其是因为稍后您无需再次检查它是否存在就执行此操作:
++$_GET['wp-parse-api-page'];
最后,我建议您在代码中使用一致的缩进和格式。这样检查 GET 参数的块将更具可读性:
if (isset($_GET['wp-parse-api-page'])) {
$_GET['wp-parse-api-page'] = (int)$_GET['wp-parse-api-page'];
if ($_GET['wp-parse-api-page'] < 1) {
$_GET['wp-parse-api-page'] = 1;
}
$options = array(
'numberposts' => $numberposts,
'offset' => ($_GET['wp-parse-api-page'] * $numberposts) - $numberposts
);
}
因此,我正在为基于 this Github project 的客户端构建一个 WordPress 插件,这将允许您从 WordPress 中提取帖子。
基本上我把这个项目拉下来了,我有几个错误。我一直在一次对付他们一个。关于这堆中的第一个错误,我之前有过
Notice: Undefined variable: options in /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/WP-Plugin/includes/class-wp-parse-api-admin-settings.php on line 42
看来同步失败了。我认为我实施的修复之一导致未分配变量之一。
(更新 - 我查看了 'cale_b' 提供的 link,但我确实相信真正的下划线问题超出了未定义的变量,如 'benito' 所述,在他的回应。我想解决下划线问题,而不仅仅是回避错误。)
如果有人能提供一些关于如何解决此问题的见解,以便插件成功同步到 Parse Server 实例,我将不胜感激。
解析服务器由 Back4App 托管。
我已经发布了来自 'class-wp-parse-api-admin-settings.php' here on PasteBin and below...
的代码<?php
if (!defined('WP_PARSE_API_PATH')) die('.______.');
if (is_admin()){ // admin actions
add_action('admin_menu', 'wp_parse_api_menu');
add_action('admin_post_wp_parse_api_sync', 'wp_parse_api_sync');
function wp_parse_api_menu() {
add_options_page('Parse Api Options', 'Parse Api', 'manage_options', 'wp-parse-api-options', 'wp_parse_api_page');
add_action('admin_init', 'wp_parse_api_admin_init');
}
function wp_parse_api_admin_init() {
//register our settings
register_setting('wp-parse-api-settings-group', 'app_id');
register_setting('wp-parse-api-settings-group', 'app_masterkey');
register_setting('wp-parse-api-settings-group', 'app_restkey');
register_setting('wp-parse-api-settings-group', 'app_url');
register_setting('wp-parse-api-settings-group', 'app_push_notifications');
register_setting('wp-parse-api-settings-group', 'object_name');
register_setting('wp-parse-api-settings-group', 'lang');
}
function wp_parse_api_page() {
require WP_PARSE_API_PATH .'includes/class-wp-parse-api-admin-settings-template.php';
}
function wp_parse_api_sync() {
$numberposts = 10;
if (isset($_GET['wp-parse-api-page'])) {
$_GET['wp-parse-api-page'] = (int)$_GET['wp-parse-api-page'];
if ($_GET['wp-parse-api-page'] < 1) $_GET['wp-parse-api-page'] = 1;
$options = array(
'numberposts' => $numberposts,
'offset' => ($_GET['wp-parse-api-page'] * $numberposts) - $numberposts,
);
}
$wp_posts = get_posts($options);
if (count($wp_posts) == 0) {
wp_redirect( 'options-general.php?page=wp-parse-api-options' );
exit;
}
foreach ($wp_posts as $wp) {
if ($wp->post_status != 'publish') continue;
$post = WpParseApiHelpers::postToObject($wp->ID);
$q = new parseQuery(WP_PARSE_API_OBJECT_NAME);
$q->whereEqualTo('wpId', $wp->ID);
$q->setLimit(1);
$result = $q->find();
if ($result->results[0]) {
$post->update($result->results[0]->objectId);
} else {
$post->save();
}
}
++$_GET['wp-parse-api-page'];
$url = $_SERVER['PHP_SELF'];
foreach ($_GET as $k=>$v):
$qs = (strpos($url, '?') === false ? '?' : '&');
$url .= sprintf("%s%s=%s", $qs, $k, $v);
endforeach;
//wp_redirect( $url );
echo "Page:". ($_GET['wp-parse-api-page']-1) ."<script> setTimeout(\"document.location='$url'\", 1000); </script>";
exit;
}
}
你的块中的代码:
if (isset($_GET['wp-parse-api-page'])) {
// ...
}
未调用。所以显然当你到达 get_posts($options)
时 $options
不存在。尝试将其放在:
else {
$options = array();
}
那么您可能还想调查为什么未定义 wp-parse-api-page
GET 参数。正如有人回答您之前的问题,您应该在 wp-parse-api-page=
之前加上 ?或 & 后跟 URL 中的一个数字。您必须注意这一点,尤其是因为稍后您无需再次检查它是否存在就执行此操作:
++$_GET['wp-parse-api-page'];
最后,我建议您在代码中使用一致的缩进和格式。这样检查 GET 参数的块将更具可读性:
if (isset($_GET['wp-parse-api-page'])) {
$_GET['wp-parse-api-page'] = (int)$_GET['wp-parse-api-page'];
if ($_GET['wp-parse-api-page'] < 1) {
$_GET['wp-parse-api-page'] = 1;
}
$options = array(
'numberposts' => $numberposts,
'offset' => ($_GET['wp-parse-api-page'] * $numberposts) - $numberposts
);
}