web-dev-qa-db-fra.com

Seulement sur la page 404, recevez un avis: essayer d'obtenir la propriété de non-objet sur nonce

J'utilise un plugin WordPress. Tout fonctionne bien. Exect quand ouvrir une page 404, j'ai eu cette notification:

Avis: essayer d'obtenir la propriété de non-objet dans D:\MYWEB\InstantWP_4.3.1\iwpserver\htdocs\wordpress\wp-content\plugins\sama-author-review\user-rate.php à la ligne 49

La ligne 49 ressemble à ceci:

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

Voici le code:

/**
 * 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 );
}

Existe-t-il une solution rapide pour résoudre cette erreur?

1
Mailmulah

Le $post global n'est pas défini sur les pages 404, ce qui conduit à l'erreur que vous obtenez.

Vous pouvez soit vérifier si

  • $post est défini ou

  • caution si la page en cours est une page 404 ou

  • faire tout ce qui précède

EXEMPLE

/**
 * 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 );
}

ou

/**
 * 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