Suporte » Plugins » Plugin Customizado

  • Estou desenvolvendo um plugin, o mesmo precisa realizar uma requisição WPDB via Ajax, é um plugin para o admin, abaixo o código:
    * OBS: deixei apenas o código que interessa, mas quando testo, tenho o seguinte ERRO no console:
    “load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils&ver=4.9.9:4 POST http://wordpress.loc/wp-admin/admin-ajax.php 500 (Internal Server Error)”
    * OBS2: O método inserirCidade() já foi testado sozinho, está funcionando normalmente, não tem nenhum problema nele.

    private function __construct() {		
    		add_action( 'wp_ajax_my_action', array( $this, 'my_action' ));
    		add_action( 'admin_footer', array ( $this, 'my_action_javascript' ));
    	}
    
    	public static function my_action_javascript() { ?>
    		<script type="text/javascript" >
    		jQuery(document).ready(function($) {
    
    			var data = {
    				'action': 'my_action',
    				'codigo': 222
    			};
    
    			jQuery.post(ajaxurl, data, function(response) {
    				alert('Got this from the server: ' + response);
    			});
    		});
    		</script> <?php
    	}
    
    	public function my_action() {
    
    		$codigo = intval( $_POST['codigo'] );
    		$nome = 'Meu Nome';
    		$ibge = 123;
    		$uf = 'DF';
    		
    		$Cidade = new Cidade;
    		$result = $Cidade->inserirCidade($codigo, $nome, $ibge, $uf);
    
    		wp_die(); // this is required to terminate immediately and return a proper response
    }
    • Este tópico foi modificado 4 anos, 10 meses atrás por Leo Baiano. Motivo: Adicionar code no bloco de código
    • Este tópico foi modificado 4 anos, 10 meses atrás por Leo Baiano.
    • Este tópico foi modificado 4 anos, 10 meses atrás por Leo Baiano.
Visualizando 1 resposta (de um total de 1)
  • Moderador Claudio Sanches

    (@claudiosanches)

    Esse erro é bem genérico e várias coisas podem estar causando ele, recomendo você ativar o modo de depuração do WordPress adicionando as seguintes linhas no seu wp-config.php:

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', true );

    Com isso os erros serão registrados em wp-content/debug.log, assim se tornando mais simples de depurar isso.

    Note também que na sua ação nada é retornado, então recomendo trocar o wp_die() por https://developer.wordpress.org/reference/functions/wp_send_json_success/.
    Assim vai retornar o JSON de forma correta com o $result (note que wp_send_json_success() já vai usar die or wp_die() para você, por isso basta substituir).

Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Plugin Customizado’ está fechado para novas respostas.