Skip to content

Instantly share code, notes, and snippets.

View webdados's full-sized avatar

Marco Almeida webdados

View GitHub Profile
@webdados
webdados / postcode-before-address.php
Created July 6, 2023 15:45
Postcode before other address fields for "Portuguese Postcodes for WooCommerce" full address autocomplete mode
<?php
/* You should adapt the priorities to your scenario */
add_filter( 'woocommerce_get_country_locale', function( $countries ) {
if ( is_checkout() ) {
if ( function_exists( '\Webdados\PortuguesePostcodesWooCommerce\PortuguesePostcodesWooCommerce' ) ) {
if ( get_option( 'portuguese_postcodes_woo_mode' ) == '' && get_option( 'portuguese_postcodes_woo_autocomplete_mode' ) == 'full_address' ) {
$countries['PT']['postcode']['priority'] = 45;
$countries['PT']['city']['priority'] = 46;
if ( ! ( function_exists( 'woocommerce_portugal_states' ) || class_exists( 'WC_Webdados_Distritos' ) ) ) {
// Without the Distritos plugin active
@webdados
webdados / disable_sequra_for_low_values.php
Last active May 26, 2023 10:27
Only allow SeQura payment for orders above a certain value
<?php
// First of all define the minimum value on a constant, for easy change - Ideally this would be loaded from an option on the settings
define( 'SEQURA_MIN_VALUE', 200 );
// Set the filters
add_filter( 'woocommerce_available_payment_gateways', 'disable_sequra_for_low_values' );
add_filter( 'woocommerce_sq_is_available_in_product_page', 'disable_sequra_for_low_values_product_page', 10, 2 );
// Hide it on the checkout
@webdados
webdados / add_quantcast_choice_headar.php
Created July 4, 2022 11:41
Add the new (June 2022) Quantcast Choice code to your WordPress website header
<?php
add_action( 'wp_head', array( $this, 'quantcast_choice_enable_action' ), function() {
?>
<!-- Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) -->
<script type="text/javascript" async=true>
(function() {
var host = window.location.hostname;
var element = document.createElement('script');
var firstScript = document.getElementsByTagName('script')[0];
var url = 'https://cmp.quantcast.com'
@webdados
webdados / ga_tcf2.js
Last active February 23, 2024 08:45
Google Analytics with TCF v2.0 support
/* Need help? Hire us: https://www.webdados.pt/contactos/ */
//We need to wait for the page to be ready, or else the Consent platform may not be loaded yet, and we'll fire the pageview earlier than we should
window.onload = function() {
var google_analytics_id = 'UA-111111-01'; //Replace with yours
//Prepare the data layer
window.dataLayer = window.dataLayer || []
//gtag function
function gtag() {
dataLayer.push(arguments);
@webdados
webdados / ifthen_send_email_instructions.php
Created March 22, 2022 13:03
Remove IfthenPay payment instructions from some WooCommerce emails
<?php
add_filter( 'multibanco_ifthen_send_email_instructions', 'my_multibanco_ifthen_send_email_instructions', 10, 5 );
add_filter( 'mbway_ifthen_send_email_instructions', 'my_multibanco_ifthen_send_email_instructions', 10, 5 );
add_filter( 'creditcard_ifthen_send_email_instructions', 'my_multibanco_ifthen_send_email_instructions', 10, 5 );
add_filter( 'payshop_ifthen_send_email_instructions', 'my_multibanco_ifthen_send_email_instructions', 10, 5 );
function my_multibanco_ifthen_send_email_instructions( $send, $order, $sent_to_admin, $plain_text, $email ) {
$emails_to_remove = array(
'customer_completed_order',
@webdados
webdados / flatsome_live_search_relevanssi_search_ok.php
Last active January 5, 2022 19:24
Make Flatsome live search work with Relevanssi
<?php
add_filter( 'relevanssi_search_ok', 'flatsome_live_search_relevanssi_search_ok' );
function flatsome_live_search_relevanssi_search_ok( $search_ok ) {
if ( is_ajax() && isset( $_GET['action'] ) && trim( $_GET['action'] ) == 'flatsome_ajax_search_products' ) {
return true;
}
return $search_ok;
}
@webdados
webdados / include_kk_categories.php
Created June 4, 2021 13:37
Include only certain products on the KuantoKusta WooCommerce feed
<?php
//Get the plugin from https://www.webdados.pt/wordpress/plugins/feed-kuantokusta-para-woocommerce/
add_filter( 'kuantokusta_product_node_show', 'my_include_kk_categories', 10, 2 );
add_filter( 'kuantokusta_variation_node_show', 'my_include_kk_categories', 10, 2 );
function include_kk_categories( $show, $product ) {
//If not show, we don't neeed to process the item
if ( $show ) {
//Init as false
$show = false;
//Product categories IDs to include in the feed
@webdados
webdados / invoicexpress_woocommerce_document_item.php
Last active December 31, 2023 11:53
Manipulate item data before adding it to a InvoiceXpress document on the "Invoicing with InvoiceXpress for WooCommerce – Pro" plugin
<?php
// Change item properties
add_filter( 'invoicexpress_woocommerce_document_item', function( $item_data, $item, $product, $order_object, $document_type, $args ) {
// Do whatever you want with the $item_data array, for example, change its reference or description
$item_data['name'] = 'whatever';
/ /Or add somthing to its description
$item_data['description'] .= 'whatever';
// And return it
return $item_data;
@webdados
webdados / woocommerce_nav_admin_orders_first.php
Last active April 14, 2021 12:54
Orders as the first submenu item on the WooCommerce WP-Admin menu
<?php
add_filter( 'custom_menu_order', 'woocommerce_nav_admin_orders_first' );
function woocommerce_nav_admin_orders_first( $menu_order ) {
if ( is_admin() ) {
global $submenu;
if ( isset( $submenu['woocommerce'] ) && is_array( $submenu['woocommerce'] ) ) {
$temp = array();
//Add orders as first
foreach ( $submenu['woocommerce'] as $submenu_item ) {
if ( isset( $submenu_item[2] ) && $submenu_item[2] == 'edit.php?post_type=shop_order' ) {
@webdados
webdados / invoicexpress_woocommerce_fetch_at_code.php
Created March 8, 2021 17:48
Get AT Code 2 minutes after issuing Delivery Note with Invoicing with InvoiceXpress for WooCommerce
<?php
/* Get AT Code 2 minutes after issuing Delivery Note - WordPress crons need to be running properly */
add_action( 'invoicexpress_woocommerce_after_document_finish', function( $order_id, $type ) {
if ( $type == 'transport_guide' ) {
$minutes = 2;
wp_schedule_single_event( time() + ( $minutes * 60 ), 'invoicexpress_woocommerce_fetch_at_code', array( $order_id ) );
}
}, 10, 2 );