clean up prijs-per-postcode
This commit is contained in:
@@ -12,12 +12,15 @@ require_once plugin_dir_path(__FILE__) . "session_dialog.php";
|
|||||||
require_once plugin_dir_path(__FILE__) . "admin.php";
|
require_once plugin_dir_path(__FILE__) . "admin.php";
|
||||||
require_once plugin_dir_path(__FILE__) . "pppr_cookie.php";
|
require_once plugin_dir_path(__FILE__) . "pppr_cookie.php";
|
||||||
|
|
||||||
|
|
||||||
if (!defined("ABSPATH")) {
|
if (!defined("ABSPATH")) {
|
||||||
echo "big bag of potatoes";
|
echo "big bag of potatoes";
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create salt
|
||||||
|
*/
|
||||||
register_activation_hook( __FILE__, 'create_pppr_salt' );
|
register_activation_hook( __FILE__, 'create_pppr_salt' );
|
||||||
if ( ! defined( 'WP_PPPR_SALT' ) ) {
|
if ( ! defined( 'WP_PPPR_SALT' ) ) {
|
||||||
$salt_file = __DIR__ . '/wp-pppr-salt.php';
|
$salt_file = __DIR__ . '/wp-pppr-salt.php';
|
||||||
@@ -33,6 +36,9 @@ add_filter("woocommerce_sale_flash", "__return_null");
|
|||||||
add_filter('woocommerce_show_variation_price', '__return_true');
|
add_filter('woocommerce_show_variation_price', '__return_true');
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Init the plugin
|
||||||
|
*/
|
||||||
add_action("init", function() {
|
add_action("init", function() {
|
||||||
$uri = $_SERVER["REQUEST_URI"];
|
$uri = $_SERVER["REQUEST_URI"];
|
||||||
init_postcode_handlers($uri);
|
init_postcode_handlers($uri);
|
||||||
@@ -42,10 +48,21 @@ add_action("init", function() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Set endpoint (postcode-modal/v1/submit) for the modal form.
|
/*
|
||||||
add_action("rest_api_ini", "register_modal_api");
|
* Set endpoint (postcode-modal/v1/submit) for the modal form.
|
||||||
|
*/
|
||||||
|
add_action("rest_api_init", function () {
|
||||||
|
register_rest_route( 'postcode-modal/v1', '/submit', array(
|
||||||
|
'methods' => 'POST',
|
||||||
|
'callback' => 'handle_postcode_modal',
|
||||||
|
'permission_callback' => '__return_true',
|
||||||
|
) );
|
||||||
|
});
|
||||||
|
|
||||||
/*Add local orice field to variation product.*/
|
|
||||||
|
/*
|
||||||
|
* Add local orice field to variation product.
|
||||||
|
*/
|
||||||
add_action("woocommerce_variation_options_pricing",
|
add_action("woocommerce_variation_options_pricing",
|
||||||
function($loop, $variation_data, $variation)
|
function($loop, $variation_data, $variation)
|
||||||
{
|
{
|
||||||
@@ -64,7 +81,9 @@ add_action("woocommerce_variation_options_pricing",
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/*Save the local price on product save */
|
/*
|
||||||
|
* Save the local price on product save in the admin
|
||||||
|
*/
|
||||||
add_action("woocommerce_save_product_variation",
|
add_action("woocommerce_save_product_variation",
|
||||||
function ($variation_id, $i)
|
function ($variation_id, $i)
|
||||||
{
|
{
|
||||||
@@ -79,7 +98,11 @@ add_action("woocommerce_save_product_variation",
|
|||||||
}, 10, 2,
|
}, 10, 2,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Replace "Reguliere prijs" with "Prijs overige regios" in variation prodict admin
|
|
||||||
|
/*
|
||||||
|
* Replace "Reguliere prijs" with "Prijs overige regios"
|
||||||
|
* in variation prodict admin
|
||||||
|
*/
|
||||||
add_filter( "gettext", function( $translated_text, $text, $domain,) {
|
add_filter( "gettext", function( $translated_text, $text, $domain,) {
|
||||||
if (
|
if (
|
||||||
"woocommerce" === $domain &&
|
"woocommerce" === $domain &&
|
||||||
@@ -96,7 +119,9 @@ add_filter( "gettext", function( $translated_text, $text, $domain,) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/* Filter out variations whwre the price is either 0 or ''
|
/*
|
||||||
|
* Filter out variations whwre the price is
|
||||||
|
* either 0 or '' in the dropdown menu product page
|
||||||
*/
|
*/
|
||||||
add_filter("woocommerce_variation_is_visible",
|
add_filter("woocommerce_variation_is_visible",
|
||||||
function (
|
function (
|
||||||
@@ -127,31 +152,34 @@ add_filter("woocommerce_variation_is_visible",
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/* Dynamically recalculates the cart total by overriding the standard price
|
/*
|
||||||
|
* Dynamically recalculates the cart total by overriding the standard price
|
||||||
* with a region-specific _local_price for variations when
|
* with a region-specific _local_price for variations when
|
||||||
* the user's location matches the PPPR cookie criteria
|
* the user's location matches the PPPR cookie criteria
|
||||||
*/
|
*/
|
||||||
add_action("woocommerce_before_calculate_totals",
|
add_action("woocommerce_before_calculate_totals", function($cart)
|
||||||
function($cart)
|
|
||||||
{
|
{
|
||||||
if (is_admin() && !defined("DOING_AJAX")) {
|
if (is_admin() && !defined("DOING_AJAX")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($cart->get_cart() as $cart_item) {
|
foreach ($cart->get_cart() as $cart_item)
|
||||||
|
{
|
||||||
$product = $cart_item["data"];
|
$product = $cart_item["data"];
|
||||||
$variation_id = $product->is_type("variation")
|
$variation_id = $product->is_type("variation")
|
||||||
? $product->get_id()
|
? $product->get_id()
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
if ( $variation_id && isset($_COOKIE["PPPR"]) && pppr_is_local() ) {
|
if ( $variation_id && isset($_COOKIE["PPPR"]) && pppr_is_local() )
|
||||||
|
{
|
||||||
$local_price = get_post_meta(
|
$local_price = get_post_meta(
|
||||||
$variation_id,
|
$variation_id,
|
||||||
"_local_price",
|
"_local_price",
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($local_price) {
|
if ($local_price)
|
||||||
|
{
|
||||||
$product->set_price($local_price);
|
$product->set_price($local_price);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,6 +188,9 @@ add_action("woocommerce_before_calculate_totals",
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Filter to display the regular or local price on teh product page.
|
||||||
|
*/
|
||||||
add_filter( "woocommerce_get_price_html",
|
add_filter( "woocommerce_get_price_html",
|
||||||
function($price_html, $product)
|
function($price_html, $product)
|
||||||
{
|
{
|
||||||
@@ -181,7 +212,9 @@ add_filter( "woocommerce_get_price_html",
|
|||||||
}, 10, 2,
|
}, 10, 2,
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Enforces region-locking by clearing the cart and redirecting users to
|
|
||||||
|
/*
|
||||||
|
* Enforces region-locking by clearing the cart and redirecting users to
|
||||||
* the shop page if their location cookie is invalid or expired when
|
* the shop page if their location cookie is invalid or expired when
|
||||||
* accessing key WooCommerce pages.
|
* accessing key WooCommerce pages.
|
||||||
*/
|
*/
|
||||||
@@ -215,6 +248,43 @@ add_action("template_redirect",
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chack or postcode is still valid when pressing the buy button
|
||||||
|
*/
|
||||||
|
add_action( 'woocommerce_after_checkout_validation', function( $data, $errors ) {
|
||||||
|
// 1. Controleer of de cookie bestaat en geldig is
|
||||||
|
if ( ! isset( $_COOKIE['PPPR'] ) || ! verify_pppr_cookie_string() ) {
|
||||||
|
$errors->add(
|
||||||
|
'pppr_cookie_invalid',
|
||||||
|
__( '<strong>Fout:</strong> Sessie verlopen. Vernieuw de pagina en vul je postcode opnieuw in.', 'woocommerce' )
|
||||||
|
);
|
||||||
|
return; // Stop hier, geen zin om verder te checken
|
||||||
|
}
|
||||||
|
|
||||||
|
$pppr_data = get_PPPR_data();
|
||||||
|
|
||||||
|
if ( ! $pppr_data || empty( $pppr_data['postcode'] ) ) {
|
||||||
|
$errors->add(
|
||||||
|
'pppr_data_missing',
|
||||||
|
__( '<strong>Fout:</strong> Kon postcode niet laden.', 'woocommerce' )
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Normalizeer postcodes (gebruik de juiste variabelen!)
|
||||||
|
$cookie_pc = strtoupper( str_replace( ' ', '', $pppr_data['postcode'] ) );
|
||||||
|
$shipping_pc = strtoupper( str_replace( ' ', '', $data['shipping_postcode'] ) );
|
||||||
|
|
||||||
|
// 4. Vergelijk
|
||||||
|
if ( $cookie_pc !== $shipping_pc ) {
|
||||||
|
wc_add_notice(
|
||||||
|
__( '<strong>Fout:</strong> Afleverpostcode komt niet overeen met de eerder ingevulde postcode.', 'woocommerce' ),
|
||||||
|
'error'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, 10, 2 );
|
||||||
|
|
||||||
|
|
||||||
function get_shop_url () {
|
function get_shop_url () {
|
||||||
return (function_exists('wcml_get_store_url'))
|
return (function_exists('wcml_get_store_url'))
|
||||||
? wcml_get_store_url() // WPML WooCommerce Multilingual
|
? wcml_get_store_url() // WPML WooCommerce Multilingual
|
||||||
|
|||||||
Reference in New Issue
Block a user