Avatar billede Morten Professor
25. august 2019 - 12:34 Der er 4 kommentarer

Php function og Ajax

Hej Jeg har et spørgsmål omkring php functions når man har lavet i en seprat file til det, og prøver på at kalde på det efter sideskift med ajax.
Min kode her lige til at starte med:
Mit kald:
jQuery(document).on('click', 'a.next.page-numbers, a.prev.page-numbers, a.page-numbers', function () {
jQuery.ajax({
            url: '../../wp-content/themes/storefront-child/variation_product_site.php',
           
            beforeSend: function () {
                jQuery('.loader').addClass('load');
                jQuery('html').fadeTo( 'slow', 0.4 );
                window.scrollTo(0, 0);
            },
            timeout: 100,
   
            complete: function () {
                location.reload();  <--- ((har prøvet uden den function))
            },
            success: function () {
            }
   
        });
});

Det jeg prøver at få kontakt med:
require_once('functions.php');
require('../../../wp-load.php');
add_filter('woocommerce_after_shop_loop_item', 'woocommerce_extra_variation', 40);

Er dette overhovedet muligt eller?

Det jeg forsøger på er at lave sådan at når jeg har skiftet side til feks. page2 Skal den komme frem med min function så den bliver synlig.

Det er et guick køb der skal komme frem det virker fint, men ikke når jeg prøver at kalde på det på denne måde.
Da siden til næste side vil tage for langtid for at loade den færdig. Hvis den skal have mine variationer med fra start når siden loades.

Med venlig hilsen
Morten
Avatar billede Peter Kruse Mester
27. august 2019 - 13:49 #1
Hej.

Efter en hurtigt søgning af dit problem, fandt jeg dette, synes den minder om dit problem :D

https://stackoverflow.com/questions/20572601/change-php-variable-with-ajax
Avatar billede Morten Professor
27. august 2019 - 22:21 #2
Hej Peter

Tak for du så på det. jeg er igang med at lave en ny php file der loades med jQuery.load('');
Og det virker, men desværre har jeg problemer med at få woocommerce funktioner med i filen så filen kan bruges.
Kan simpelhen ikke finde løsningen nogle steder...
Avatar billede Peter Kruse Mester
28. august 2019 - 08:27 #3
Hej Morten. Har du mulighed for at sende den nye kode, så kigger jeg med glæde på det igen. Skal lige være med, du vil kalde en woocommerce funktion i et andet php fil, dit woocommerce og dit php script er to forskellige php filer rigth?

Håber du forstår hvad jeg mener.


// Peter Kruse

- Software developer - penguware.xyz
- Web developer - sickness.dk
Avatar billede Morten Professor
28. august 2019 - 10:34 #4
Hej Peter

Super jo det er rigtigt det er i en anden file, det er for at loade den som det sidste på siden for at gøre loadingen hurtigere så ide kommer hurtigere frem i et side skift Her er alt kode jQuery, php function og seperrat fil.

jQuery:
jQuery( document ).ready(function() {
    jQuery('div#result').load('http://localhost/(Ses ikke her)/wp-content/themes/storefront-child/woocommerce/variation_product_site.php');
});

functions.php i child theme:
function add_woocommerce_file() {
echo '<div id="result"></div>';
}
add_filter('woocommerce_after_shop_loop_item', 'add_woocommerce_file', 60);

Den file jeg forsøger at få til at virke:
<?php

global $product, $post;
    $variations = $product->get_available_variations();
   
    if( $product->is_type( 'simple' ) ) {
       
    }
?>
<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

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

    foreach( $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

Med venlig hilsen
Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester