WooCommerce:在javascript代码中获取post id,并通过ajax传递



我需要帮助弄清楚如何从产品页面获取产品 ID,到我的函数,该函数在 Vimeo 视频结束后打开一个模型框。在那个模型框中,我需要一个带有产品 ID 的变量,所以我可以自动获取产品的价格并将 ID 插入简码中。

希望有人可以提供帮助,并随时询问,如果您需要更多信息,我会尽力提供帮助。

我已经尝试了最常见的想法,我能找到。

global $product;
$id = $product->get_id();

global $post;
$id = $post->ID

global $product;
$id = $product->id;

我已经尝试了我能找到的所有变体。

如果我使用第一个,我的函数甚至不起作用。

如果我使用其他 2 个,它只会给我一个 0 作为值。

// The javascript to call the function when video ends.
var iframe = document.querySelector("iframe");
var player = new Vimeo.Player(iframe);
    player.on("ended", function() {
      jQuery(document).ready(function($) {
    var data = {
        action: 'runThisPhpFunction',
    };
    jQuery.post(ajaxurl, data, function(popupfunction) {
        $("#popup-box").html(popupfunction);
    });
  });
});

接下来是我的函数。

//Call Javascript video vimeo script to functions
function add_my_scripts() {
        global $product;
        $deps = array('jquery');
        $in_footer = true;
            wp_register_script( 'myjavascript', get_stylesheet_directory_uri() . '/js/myjavascript.js', array(), '1.0.0', true );
          wp_enqueue_script( 'myjavascript', get_stylesheet_directory_uri() . '/js/myjavascript.js');
  }

add_action( 'wp_enqueue_scripts', 'add_my_scripts' );
add_filter( 'widget_text', 'do_shortcode' );
add_action( 'wp_ajax_runThisPhpFunction', 'runThisPhpFunction' );
add_action( 'wp_ajax_nopriv_runThisPhpFunction', 'runThisPhpFunction' );
global $wpdb;
global $wp;
// THE FUNCTION WHERE I NEED THE ID FROM CURRENT PRODUCT PAGE AUTOMATIC
function runThisPhpFunction() {
  global $product;
  $product = wc_get_product();
  $siteid = $product->ID;
    //echo '<script>console.log($product);</script>';
    echo '<script>document.getElementById("popup-box").classList.remove("hidden");</script>';
    echo '<div class="modalheader">';
    echo '<h3>Undskyld. Vi stoppede videoen!</h3>';
    echo '</div>';
    echo '<div class="modalcontent">';
    echo $siteid, 'Men vi venter lige her, klar til at fortsætte når du har hentet Dankortet 😉';
    echo '</div>';
}

由于您使用的是javascript/jQuery/Ajax,并且您需要在Javascript代码中获取产品ID(即Post ID(以将其通过Ajax传递给PHP,请尝试以下重新访问的代码:

add_action( 'wp_footer', 'custom_vimeo_player_script' );
function custom_vimeo_player_script() {
    // Not in cart, checkout and my account pages
    if( ! ( is_checkout() || is_cart() || is_account_page() ) ) :
    ?>
    <script type="text/javascript">
    jQuery(function($){
        if (typeof wc_add_to_cart_params === 'undefined') 
            return false;
        var iframe = document.querySelector("iframe"),
            player = new Vimeo.Player(iframe);
        player.on('ended', function(){
            $.ajax({
                type: 'POST',
                url: wc_add_to_cart_params.ajax_url,
                data: {
                    'action': 'enable_vimeo_popup_box',
                    'the_id': <?php echo get_the_id(); ?>,
                },
                success: function (result) {
                    // if popup-box has the class hidden
                    if( $("#popup-box").hasClass('hidden') && result ){
                        // remove the class hidden and add the html output
                        $("#popup-box").removeClass('hidden').html(result);
                    }
                    console.log(result);
                },
            });
        });
    });
    </script>
    <?php
    endif;
}
// PHP: WordPress Ajax function triggered by Javascript
add_action( 'wp_ajax_enable_vimeo_popup_box', 'enable_vimeo_popup_box' );
add_action( 'wp_ajax_nopriv_enable_vimeo_popup_box', 'enable_vimeo_popup_box' );
function enable_vimeo_popup_box() {
    if( isset($_POST['the_id']) ){
        $post_id = (int) $_POST['the_id'];
        echo '<div class="modalheader">
        <h3>' . __("Undskyld. Vi stoppede videoen!") . '</h3>
        </div><div class="modalcontent">' .
        '<em>(post_id er ' . $post_id . ')</em> ' .
        __("Men vi venter lige her, klar til at fortsætte når du har hentet Dankortet 😉") .
        '</div>';
    }
    die();
}

代码进入函数.php活动子主题(或活动主题(的文件。它应该有效。

最新更新