Skip to content

Instantly share code, notes, and snippets.

View tott's full-sized avatar

Thorsten Ott tott

  • Germany, Cologne area
View GitHub Profile
@tott
tott / group-fields.php
Last active September 27, 2022 13:26
ElasticPress group meta fields
<?php
add_filter(
'ep_prepare_meta_data',
function ( $meta ) {
$meta_groups = [
'group1' => [
'_sku',
'_sale_price_dates_from',
'_sale_price_dates_to',
],
@tott
tott / import-teamwork.sh
Created October 12, 2020 14:48
Get Tasks currently assigned to you from Teamwork api and import to topydo
#!/usr/bin/env bash
# Get token from edit profile API & Mobile https://developer.teamwork.com/projects/apikey/key
# Get auth string by base64 encoding <token>:<randomstring>
# https://www.base64encode.org/ can be used to create such encoded string
token=<authstring>
authString="Authorization: Basic $token"
# Get user id from your profile url (/#/people/<userid>/tasks)
userId=<userid>
@tott
tott / gist:1782a7fe1b8158eeb13ab632e2663574
Created September 21, 2020 12:19
ElasticPress allow _wysiwig_ meta_keys in searches
add_filter(
'ep_weighting_configuration_for_search',
function( $weighting_config ) {
global $wpdb;
$post_meta = get_transient( 'custom_ep_distinct_post_meta' );
if ( ! $post_meta ) {
$post_meta = $wpdb->get_col(
"SELECT DISTINCT meta_key
FROM {$wpdb->postmeta} pm
@tott
tott / hide_repeater_meta_from_elasticpress.php
Created March 19, 2020 19:56
Hide repeater styrle fields following the pattern ..._0_... from indexing in ElasticPress
add_filter( 'ep_prepare_meta_data', function( $meta ) { 
foreach( $meta as $key => $value ) {
if ( preg_match( '/.+_([0-9]+)_.+/', $key ) ) {
unset( $meta[$key] );
}
}
return $meta;
} );
@tott
tott / run-wp-cron.sh
Created November 16, 2019 00:04
Execute WP-Cron on multisite through wp-cli
#!/bin/bash
function run_cron_due_now {
for SITE_URL in $(wp --allow-root site list --fields=url --format=csv | tail -n +2 | sort); do
wp --allow-root cron event run --due-now --url="$SITE_URL" && echo -e "\t+ Completed Crons for $SITE_URL" &
done
wait $(jobs -p)
echo "Done"
}
@tott
tott / set-exact.php
Created September 11, 2019 10:28
Set ElasticPress Exact match
function set_to_exact( $formatted_args, $args ) {
if ( ! empty( $formatted_args['query']['bool']['should'] ) ) {
$formatted_args['query']['bool']['must'] = $formatted_args['query']['bool']['should'];
$formatted_args['query']['bool']['must'][0]['multi_match']['operator'] = 'AND';
unset( $formatted_args['query']['bool']['should'] );
unset( $formatted_args["query"]["bool"]["must"][0]["multi_match"]["type"] );
}
return $formatted_args;
}
add_filter( 'ep_formatted_args', 'set_to_exact', 10, 2 );
@tott
tott / gist:9d061c750f0e80703390a1f5571cf7e3
Created September 5, 2019 09:49
search term highlighting elasticpress
add_filter(
'ep_formatted_args',
function( $formatted_args ) {
if ( ! empty( $_GET['s'] ) ) {
foreach ( [ 'post_title', 'post_excerpt', 'author_name', 'terms.post_tag.name', 'terms.category.name' ] as $field ) {
$formatted_args['highlight']['fields'][ $field ] = [
'pre_tags' => [ '<strong style="background:yellow">' ],
'post_tags' => [ '</strong>' ],
'type' => 'plain',
];
@tott
tott / debug_http_requests.php
Created May 22, 2019 14:19
debug_http_requests.php Debug WordPress http api requests
<?php
add_action( 'http_api_debug', 'my_http_api_debug', 10, 5 );
function my_http_api_debug( $response, $type, $class, $args, $url ) {
error_log( 'requested url: ' . var_export( $url, true ) );
error_log( 'arguments: ' . var_export( $args, true ) );
error_log( 'http response : ' . var_export( $response, true ) );
}
@tott
tott / gist:7125b5cfa1bd48d8da0e9ad89256c802
Created November 24, 2018 20:59
polybar popup calendar
polybar config
[module/date]
type = custom/script
exec = ~/scripts/popup-calendar.sh
interval = 5
click-left = ~/scripts/popup-calendar.sh --popup
format-background = ${colors.alt-background}
format-foreground = ${colors.alt-foreground}
label = %output:25%
@tott
tott / read-backlight.py
Created November 22, 2018 11:41
Read backlight for x230 / x330 taobao FHD mod
#!/usr/bin/env python
import sys
import array
import usb.core
import usb.util
import os
path = "/tmp/backlight-value"
# decimal vendor and product values