Pregunta sobre Developing with WordPress de Wordpress:

Mi función debe ejecutarse después de que el documento esté listo

Un usuario preguntó 👇

Tengo un problema al ejecutar mi función a través de ajax. Lo necesito para usar mi función una vez que se carga la página terminada. Esta no es una función o Post, es código puro. Debería haber una oportunidad de selección.

De hecho, he buscado mucho en Google pero no puedo encontrar la solución.

Entonces me gustaría poder usar mi función php y mostrarla en la página después de que la página haya terminado de cargarse

add_action('wp_ajax_add_woocommerce_file', 'add_woocommerce_file');
add_action('wp_ajax_nopriv_add_woocommerce_file', 'add_woocommerce_file');
function add_woocommerce_file() { ?>

 <form class="cart variation" action="" method="post" enctype='multipart/form-data'>
     <div class="popup">
             <div class="popup-content">
                 <div class="close-content-container">X</div>
             <?php the_content(); ?>
                 </div>
            </div>
     <?php
    global $product, $post;

    $output = '
    <select name="variation_id" id="variation_id">
    <option value="">Vælg...</option>';

    foreach( $product->get_available_variations() as $variation ){
        if($variation['max_qty'] > 0) {//Finder ud af om der er vare på lager det den kalde variation.
        $option_value = array(); 

        foreach( $variation['attributes'] as $attribute => $term_slug ){
            $taxonomy = str_replace( 'attribute_', '', $attribute );
            $attribute_name = get_taxonomy( $taxonomy )->labels->singular_name; // Attribute name
            $term_name = get_term_by( 'slug', $term_slug, $taxonomy )->name; // Attribute value term name

            $option_value[] =  ' ' .$term_name. ' ';

        }

        $option_value = implode( '   ::   ', $option_value );

        $output .= '
        <option class="option_value" value="'.$variation['variation_id'].'">'.$option_value.'</option>';

        }
    }
    $output .= '
        </select>';
?><a type="button" id="open" class="open-popup">Kort varebeskrivelse</a><?php
   echo $output;

 ?>
     <input type="hidden" name="variation_id" id="variation_id" value="" />
     <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
     <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />

     <div class="tilfoej"><div class="cart_flex">Læg i kurv</div></div>

</form> <?php 
}

add_filter('woocommerce_after_shop_loop_item', 'add_woocommerce_file', 60);

    // My ajax call

jQuery(document).ready( function () {

    // Ajax 
    jQuery.ajax({
            url: the_ajax_script.ajaxurl,
            type: "POST",
            dataType: 'html',
            data: {
                    action: 'add_woocommerce_file'
                            },
            success: function( response ) {
                jQuery(".variation").show();
                            },
            error : function() {
                alert("virker ikke");
            }
    });
});

// output on category
    <div class="variation"></div>

(@ alegremente)

Hace 1 año, 4 meses

¿Cuál es el punto de? La página se genera en PHP. no hay entrada de usuario para la función ajax, entonces, ¿por qué usar JS para volver al servidor y generar el HTML? Simplemente genere el HTML en PHP y use CSS para ocultarlo, y pídale a su JS que solicite al CSS que lo muestre cuando se cargue la página. No hay necesidad de ajax.

(@mortenamdk)

Hace 1 año, 4 meses

No creo que esa solución ayude con el problema. Habrá cambios específicos al principio en lugar de Venir cuando el documento esté listo. Hay un producto menor que necesita cargarse alrededor de 60. Y hay varias llamadas a la base de datos. Y eso ralentiza la carga de la página siguiente. Espero aclarar por qué necesito una solución para hacer eso.

Todo lo mejor para Morten

(@bcworkz)

Hace 1 año, 4 meses

Es posible que obtenga una mejor puntuación de velocidad de página al cargar la mayor parte de la página con Ajax, pero realmente está disminuyendo el tiempo que tarda el usuario en ver los datos en la página.

jQuery(document).ready() hace lo que se supone que debe hacer. Si tiene problemas con su código, no es una función lista para documentos.

(@mortenamdk)

Hace 1 año, 4 meses

No tengo ningún problema con mi función, es el Ajax que no puedo hacer funcionar. Pero si no se puede poner en práctica, dígalo.

(@bcworkz)

Hace 1 año, 4 meses

Intentalo url: the_ajax_script.ajaxurl+'?action=add_woocommerce_file',

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *