web-dev-qa-db-ja.com

デバッグ PHP WordPressでのAjax呼び出し中のオブジェクト

何が起こっているのかを見るためにWPデータにアクセスすることができないようですので、PHPプラグインで作業するのに本当に問題があります。

私のPHP関数(下記)に好きではないものを入れた場合、プラグインはajax呼び出しを行います。

線の代わりに

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

私はもう試した

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

これは機能し、ページに "bad"というエラーメッセージを表示します(これは私が望むものに似ていますが、条件付きにしたいのですが)。

しかし、ここにvar_dump($this)を入れると、ajax呼び出しがハングします。

またecho '<script>console.log("My")</script>';は私をどこにも連れて行かなかった

最終的に私は外部からフックに結びつくための関数を書きたいのですが、私はそれを行う方法を解決するためにここでコードで遊ぶ必要があります、そして何が起こっているのかわからないので私は動けません。

任意の助けは大歓迎です。

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

あなたがその変数であなたのオブジェクトを見たいのなら、あなたはそれを文字列に変換しなければなりません:

$data_str = print_r( $this, true );

それをエラー配列に含めることも、コードをデバッグしているだけの場合は、error_logを使用してWebサーバーのエラーログファイルに送ることもできます。

error_log( $data_str );
2
dbeja