Skip to content

Instantly share code, notes, and snippets.

View webdevs-pro's full-sized avatar

Alex Ishchenko webdevs-pro

View GitHub Profile
@webdevs-pro
webdevs-pro / index.php
Created August 29, 2023 06:41
PHP Function to Reorder Array Elements Based on a Template Array and a Custom Comparison Key
<?php
$value = [
[
'attribute_type' => 'pa_merchant',
'pa_merchant' => [ 305 ],
],
[
'attribute_type' => 'pa_brand',
'pa_brand' => [ 692 ],
],
@webdevs-pro
webdevs-pro / index.php
Created January 21, 2023 21:52
WooCommerce remove outofstock products from related
add_filter( 'woocommerce_related_products', 'exclude_oos_related_products', 10, 3 );
function exclude_oos_related_products( $related_posts, $product_id, $args ){
$out_of_stock_product_ids = (array) wc_get_products( array(
'status' => 'publish',
'limit' => -1,
'stock_status' => 'outofstock',
'return' => 'ids',
) );
$exclude_ids = $out_of_stock_product_ids;
@webdevs-pro
webdevs-pro / YouTubeURLFormats.txt
Created May 15, 2022 19:34 — forked from rodrigoborgesdeoliveira/ActiveYouTubeURLFormats.txt
Example of the various YouTube url formats
http://www.youtube.com/watch?v=-wtIMTCHWuI
http://www.youtube.com/v/-wtIMTCHWuI?version=3&autohide=1
http://youtu.be/-wtIMTCHWuI
http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D-wtIMTCHWuI&format=json
http://www.youtube.com/attribution_link?a=JdfC0C9V6ZI&u=%2Fwatch%3Fv%3DEhxJLojIE_o%26feature%3Dshare
<?php
$data = @json_decode( get_post_meta( 21361, '_elementor_data', true ), true );
if ( $data ) {
function stylepress_email_find( $data, $findkey ) {
if ( is_array( $data ) ) {
foreach ( $data as $d ) {
if ( $d && ! empty( $d['id'] ) && $d['id'] === $findkey ) {
return $d;
}
if ( $d && ! empty( $d['elements'] ) && is_array( $d['elements'] ) ) {
<?php
class AIGetElementSettings {
public function __construct( $postid, $widget_id, $widget_type ) {
$this->postid = $postid;
$this->widget_id = $widget_id;
$this->widget_type = $widget_type;
$this->widget = null;
$this->parse();
}
@webdevs-pro
webdevs-pro / index.js
Created January 20, 2022 12:45
Elementor controls events
elementor.channels.editor.on('section:activated', function(sectionName, editor) {
var editedElement = editor.getOption('editedElementView');
if ('frymo-contact-form' !== editedElement.model.get('widgetType')) {
return;
}
console.log('sectionName', sectionName);
console.log('editor', editor);
var isSideBSection = -1 !== ['section_form', 'fields_styles'].indexOf(sectionName);
editedElement.$el.toggleClass('test', isSideBSection);
});
@webdevs-pro
webdevs-pro / index.html
Created December 13, 2021 15:50
Elementor custom animated progress bar with waypoint
<div class="pref-progress" data-percent="50">
<div class="pref-bar"><div class="pref-perc">0%</div></div>
</div>
<br>
<div class="pref-progress" data-percent="72">
<div class="pref-bar"><div class="pref-perc">0%</div></div>
</div>
<br>
<div class="pref-progress" data-percent="99">
<div class="pref-bar"><div class="pref-perc">0%</div></div>
function initDHtooltips() {
// tolltips
$( document ).on( 'mouseenter', '[data-dh-tooltip]', function() {
clearTimeout( $( this ).data( 'dh-tooltip-timeout-id' ) );
var prevTooltip = $( this ).find( '.tooltip' );
if ( prevTooltip.length > 0 ) return false;
$( this ).append( '<div class="tooltip"><div class="tooltip-wrapper"><span>' + $( this ).data( 'dh-tooltip' ) + '</span></div><div class="tooltip-trangle"></div></div>' );
@webdevs-pro
webdevs-pro / index.php
Created October 16, 2021 17:32
WP set default page template for new post
<?php
add_action( 'wp_insert_post', 'filter_function_name_11', 10, 3 );
function filter_function_name_11( $post_id, $post, $update ) {
update_post_meta( $post_id, '_wp_page_template', 'elementor_canvas' );
}
@webdevs-pro
webdevs-pro / page-update.php
Created October 3, 2021 18:02
Elementor data widget controls updater
<?php
function update_controls( $elements ) {
$new_elements = array();
foreach ( $elements as $element_index => $element ) {
foreach ( $element as $key => $value ) {
if ( $key == 'elements' && ! empty( $value ) ) {
$new_elements[$element_index][$key] = update_controls( $value );