web-dev-qa-db-ja.com

404ページのみに注意してください。nonceのnon-objectのプロパティを取得しようとしています

私はWordPressプラグインを使っています。すべてうまくいきます。 404ページを開いたときに実行すると、この通知が表示されます。

Notice:D:\ MYWEB\InstantWP_4.3.1\iwpserver\htdocs\word-content\plugins\sama-author-review\user-rate.phpの49行目にある非オブジェクトのプロパティを取得しようとしています

行49は次のようになります。

'nonce' => wp_create_nonce('ajax-user-rate-nonce-'. $post->ID)

ここでのコード:

/**
 * enqueue scripts used in frontend
 *
 */
function sama_enqueue_scripts() {
    global $post, $sama_author_review;

    $ajax_vars = array(
        'url' => admin_url( 'admin-ajax.php' ),
        'nonce' => wp_create_nonce('ajax-user-rate-nonce-'. $post->ID)
    );
    // see author-review.php
    wp_localize_script( 'review', 'ajax_user_rate', $ajax_vars );
}

これらのエラーを解決するための簡単な修正はありますか?

1
Mailmulah

$postグローバルが404ページに設定されていないため、エラーが発生します。

どちらでも確認できます

  • $postが設定されているか

  • 現在のページが404ページの場合は保釈

  • 上記のすべてを行います

/**
 * enqueue scripts used in frontend
 *
 */
function sama_enqueue_scripts() {
     global $post, $sama_author_review;

    if ( !isset( $post ) )
        return;

     $ajax_vars = array(
         'url' => admin_url( 'admin-ajax.php' ),
         'nonce' => wp_create_nonce('ajax-user-rate-nonce-'. $post->ID)
     );
     // see author-review.php
     wp_localize_script( 'review', 'ajax_user_rate', $ajax_vars );
}

または

/**
 * enqueue scripts used in frontend
 *
 */
function sama_enqueue_scripts() {
     global $post, $sama_author_review;

    if ( is_404() )
        return;

     $ajax_vars = array(
         'url' => admin_url( 'admin-ajax.php' ),
         'nonce' => wp_create_nonce('ajax-user-rate-nonce-'. $post->ID)
     );
     // see author-review.php
     wp_localize_script( 'review', 'ajax_user_rate', $ajax_vars );
}
2
Pieter Goosen