我需要帮助弄清楚如何从产品页面获取产品 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活动子主题(或活动主题(的文件。它应该有效。