Примечание: неопределенная переменная — плагин WordPress / Parse Server — ошибка PHP

Поэтому я собираю плагин WordPress для клиента на основе этот проект Github, что позволит вам получать сообщения из WordPress.

По сути, я снял проект, и у меня было несколько ошибок. Я боролся с ними по одному. я имел разместил вопрос здесь раньше по отношению к первой ошибке в связке. Я воспользовался советом пользователя «dipmala» и решил эту проблему, но теперь у меня появилась эта новая проблема, которая появляется, когда я пытаюсь запустить функцию «sync».

Примечание: неопределенная переменная: параметры в
/opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/WP-Plugin/includes/class-wp-parse-api-admin-settings.php
на линии 42

Похоже, что синхронизация не удалась. Я думаю, что одно из исправлений, которые я реализовал, приводит к тому, что одна из переменных не назначается.

(ОБНОВЛЕНИЕ — я посмотрел на ссылку, предоставленную ‘cale_b’, однако я действительно считаю, что реальная проблема подчеркивания находится за пределами неопределенной переменной, как упомянуто ‘benito’, в его ответе. Я хотел бы исправить проблему подчеркивания , а не просто побочный шаг ошибки.)

Я был бы очень признателен, если бы кто-нибудь мог дать мне некоторое представление о том, как решить эту проблему, чтобы плагин успешно синхронизировался с экземпляром Parse Server.

Сервер Parse размещается на Back4App.

Я разместил код из ‘class-wp-parse-api-admin-settings.php’ здесь на PasteBin и ниже …

<?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;
}
}

1

Решение

Код внутри вашего блока:

if (isset($_GET['wp-parse-api-page'])) {
// ...
}

не называется. Так очевидно $options не существует, когда вы достигнете get_posts($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
);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]