注意:未定义的变量 - WordPress / Parse Server插件 - PHP错误

时间:2018-01-04 00:03:16

标签: php wordpress parse-server

因此,我正在为基于this Github project的客户端整理WordPress插件,这样您就可以从WordPress中提取帖子。

基本上我拉下了项目,但我遇到了一些错误。我一次一个地处理它们。我之前有posted a question here与第一个错误有关。我接受了用户' dipmala'的建议。并解决了这个问题,但现在我尝试运行“同步”时会出现这个新问题。功能

  

注意:未定义的变量:选项   /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/WP-Plugin/includes/class-wp-parse-api-admin-settings.php   第42行

似乎同步失败。我认为我实施的其中一个修正案导致其中一个变量没有被分配。

(更新 - 我查看了' cale_b'提供的链接,但是我确实认为真正的下划线问题超出了未定义的变量,正如' 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;   
    }
}

1 个答案:

答案 0 :(得分:0)

块内的代码:

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

未被调用。因此,当您到达$options时,get_posts($options)显然不存在。试着把它放在后面:

else {
    $options = array();
}

然后您可能还想调查为什么没有定义wp-parse-api-page GET参数。如果有人回复了您之前提出的问题,那么您应该先加wp-parse-api-page=吗?或者&amp;并在您的网址中跟一个数字。你必须要处理这个问题,特别是因为你以后再这样做而不再检查它是否存在:

++$_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
        );
    }