web-dev-qa-db-fra.com

Débogage PHP objet pendant l'appel Ajax dans WordPress

J'ai vraiment du mal à travailler sur un plugin WP parce que je n'arrive pas à accéder à mes données PHP pour voir ce qui se passe.

Le plugin effectue un appel ajax qui se bloque si je mets quelque chose qu’il n’aime pas dans ma fonction PHP (ci-dessous).

Au lieu de la ligne

do_action_ref_array( 'bookly_validate_custom_field', array( $field, &$this->errors, $fields[ $field->id ] ) );

J'ai essayé

$this->errors['custom_fields'][ $cart_key ][ $field->id ] = __( 'bad', 'bookly' );

Ce qui fonctionne et affiche un message d'erreur "mauvais" sur la page (ce qui correspond à ce que je veux, bien que je veuille le rendre conditionnel).

Cependant, si je mets var_dump($this) ici, l'appel ajax est bloqué.

De plus, echo '<script>console.log("My")</script>'; ne m'a pas conduit nulle part

Finalement, j'aimerais écrire une fonction pour relier le crochet de l'extérieur, mais je dois jouer avec le code ici pour savoir comment faire cela, et comme je ne peux pas voir ce qui se passe, je suis coincé.

Toute aide très appréciée.

public function validateCustomFields( $value, $form_id, $cart_key )
    {
        $decoded_value = json_decode( $value );
        $fields = array();
        foreach ( json_decode( get_option( 'bookly_custom_fields' ) ) as $field ) {
            $fields[ $field->id ] = $field;
        }

        foreach ( $decoded_value as $field ) {
            if ( isset( $fields[ $field->id ] ) ) {
                if ( ( $fields[ $field->id ]->type == 'captcha' ) && ! Captcha\Captcha::validate( $form_id, $field->value ) ) {
                    $this->errors['custom_fields'][ $cart_key ][ $field->id ] = __( 'Incorrect code', 'bookly' );
                } elseif ( $fields[ $field->id ]->required && empty ( $field->value ) && $field->value != '0' ) {
                    $this->errors['custom_fields'][ $cart_key ][ $field->id ] = __( 'Required', 'bookly' );
                } else {
                    /**
                     * Custom field validation for a third party,
                     * if the value is not valid then please add an error message like in the above example.
                     *
                     * @param \stdClass
                     * @param ref array
                     * @param \stdClass
                     */
                    do_action_ref_array( 'bookly_validate_custom_field', array( $field, &$this->errors, $fields[ $field->id ] ) );
                }
            }
        }
    }
1
Robin

Si vous voulez voir votre objet dans cette variable, vous devez le convertir en chaîne:

$data_str = print_r( $this, true );

Vous pouvez ensuite l'inclure dans votre tableau d'erreurs ou, si vous ne faites que déboguer votre code, vous pouvez l'envoyer au fichier journal des erreurs de votre serveur Web à l'aide de error_log:

error_log( $data_str );
2
dbeja