Pergunta sobre desenvolvimento com WordPress a partir do WordPress: chamada Ajax para função PHP

Um usuário perguntou ?

Olá,

Alguém pode me mostrar um bom exemplo de como chamar uma função PHP com Ajax? Quero salvar uma galeria de imagens (com um número dinâmico de imagens) em um banco de dados na seção de configurações de administrador. O código a seguir está incompleto ou possivelmente contém alguns erros. Mostre-me um bom exemplo ou uma maneira melhor:


<button type="button" class="btn btn-primary" onclick="jsAddSettingsFields()">Save Changes</button> 

    function jsAddSettingsFields(){

        var elements = document.getElementsByTagName("img");
        var urlsdata = new Array();

        for (var i = 0, element; element = elements[i++];) {
            if (elements[i].id == "idGalPic") {
                 urlsdata[i] = elements[i].src; 
    //now we have all image urls in array, now need to call add_settings_fields

                 var data = {
                        action: 'php_addsettingsfields',
                        p_urls: urlsdata //I think i need to JSON this
                    };
                 jQuery.post( "", function( data ) );
                 //
            }
        }

    }//end of js function

//PHP part:
<?php
  add_action( 'wp_ajax_update_options', 'php_addsettingsfields_callback' );
  add_action( 'wp_ajax_nopriv_update_options', 'php_addsettingsfields_callback' );

            function php_addsettingsfields_callback() {
    
                $pic_urls = $_POST['p_urls'];  //De-JSON-fy this variable

                foreach ($pic_urls as &$url) {
                    add_settings_field($url);
                }
	        add_settings_field(
	            'pic_url_id', // ID - slug name of field
	            '', // Title 
	            array( $this, 'pic_gal_callback' ), // Callback
	            'TestPlugin', // Page
	            'setting_section_id' // Section ID - slug name of page         
	        );   

	    public function pic_gal_callback()  
	    {
               <input type="hidden" id="idPic" name="idPic" value=$url>
             }

             //after all hidden fields(with gallery pic urls) are added to setting section submit the page and save the gallery urls to database

Este tópico foi modificado 9 meses, 3 semanas atrás por. Razão: use o botão CODE para formatar o código

(@bcworkz)

9 meses, 3 semanas atrás

Eu recomendo obter uma solicitação e resposta básica do Ajax funcionando corretamente antes de tentar qualquer coisa com URLs de imagem. Uma vez que funcione, você pode adicioná-lo para adicionar a funcionalidade que você precisa. A solicitação POST deve ir para /wp-admin/admin-ajax.php. As ações que você executa são conectadas com base no elemento de dados de ‘ação’ que você executa. Para obter mais detalhes, consulte o Manual do Plugin.

lançador de tópicos

(@diretor1977)

9 meses, 3 semanas atrás

Porra, esse Javascript está me deixando louco. Você pode me ajudar a corrigir este violino por favor?

Eu quero pegar as urls de todos os elementos da imagem e editá-los e conectá-los ao Json. Porque não funciona?

(@bcworkz)

9 meses, 3 semanas atrás

Verifique o console de erros para sugestões de erros bobos, como um plugue { sa for linha de laço.

Não é um HTML válido para mais de uma função ter um determinado ID de página. Então você não pode usá-lo getElementById() para obter mais de uma função. Use um método de seleção diferente ou obtenha o<ul>elemento e faça uma busca detalhada para obter<img /> nós secundários.

Parei de verificar quando se tratava de reescrever seu código, portanto, ainda pode haver outros problemas. Entre checar o console e checar valores de variáveis ​​com alertas, você deve conseguir encontrar o código em execução.

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *