Skip to content

Instantly share code, notes, and snippets.

View mrmu's full-sized avatar
🇹🇼

AudiLu mrmu

🇹🇼
View GitHub Profile
@mrmu
mrmu / maxArea.php
Last active May 11, 2023 05:09
Leetcode: php 給一個陣列,裡面每個值代表容器兩旁的高度,要計算使用哪兩個高度,可以取得最大面積,並且顯示面積結果。
<?php
function maxArea($height) {
$result = 0;
// 第一個高度的位置
for ($i = 0; $i < sizeof($height); $i++) {
// 第二個高度的位置
for ($j = 1; $j < sizeof($height); $j++) {
// 相同高度不用和自己比較
if ($i === $j) {
continue;
@mrmu
mrmu / functions.php
Created December 6, 2021 03:46
[WordPress] Remove the hook functions defined in object of class (移除寫在物件裡的 hook functions)
<?php
// Remove hook functions (include actions and filters) that were defined in instances of class.
function remove_hooked_functions_in_obj($hook_tag = false, $class_name = '', $function_name, $priority = 10) {
// Visit all hook tags if existed
if (!empty($GLOBALS['wp_filter']) && !empty($GLOBALS['wp_filter'][$hook_tag])) {
foreach($GLOBALS['wp_filter'][$hook_tag]->callbacks[$priority] as $callback) {
// You can use get_class($obj) to get the class name which object belong
if (
$callback['function'] &&
(is_a( $callback['function'][0], $class_name )) &&
@mrmu
mrmu / mu_bootstrap_megamenu_nav_walker.php
Last active November 30, 2020 20:14
WordPress Bootstrap Mega Menu Nav Walker
<?php
/* Usage:
* 至後台建立選單,並勾選 Mega menu,自訂的 Walker 會將第二層選項建成 .row .col 的形式
* 第二層選單的 css class 設為 mega-col,會自動註冊對應的「小工具容器」 (widget sidebar)
* 就能以小工具形式自訂 mega menu 的欄位內容。
*/
// 自訂 walker: Mu_Bootstrap_Mega_Menu_Nav_Walker
class Mu_Bootstrap_Mega_Menu_Nav_Walker extends Walker_Nav_Menu {
@mrmu
mrmu / wc_data_getter.php
Last active November 18, 2019 03:03
Demo: return the value of wc_get_product_id_by_sku() by ajax calling in wp plugin
<?php
/*
Plugin Name: WC Data Getter
Plugin URI:
Description: For demonstration
Version: 1.0
Author: audi
*/
add_action( 'wp_head', 'my_ajax_form' );
@mrmu
mrmu / WooTop200Customers.sql
Last active March 21, 2019 09:15
[SQL] WooCommerce Top 200 Best Customers List 買最多的客戶排序
SELECT DISTINCT ID, SUM(CONVERT(pm.meta_value, UNSIGNED INTEGER)) AS total, pm4.meta_value AS user_id, pm2.meta_value AS customer, pm3.meta_value AS email, pm5.meta_value AS mobile
FROM pm_posts AS pp
LEFT JOIN pm_postmeta AS pm ON pp.ID = pm.post_id
LEFT JOIN pm_postmeta AS pm2 ON pp.ID = pm2.post_id
LEFT JOIN pm_postmeta AS pm3 ON pp.ID = pm3.post_id
LEFT JOIN pm_postmeta AS pm4 ON pp.ID = pm4.post_id
LEFT JOIN pm_postmeta AS pm5 ON pp.ID = pm5.post_id
WHERE pp.post_status IN ('wc-processing', 'wc-completed') AND pm.meta_key = '_order_total' AND pm2.meta_key = '_billing_name' AND pm3.meta_key = '_billing_email' AND pm5.meta_key = '_billing_phone' AND pm4.meta_key = '_customer_user' AND pm4.meta_value != 0
GROUP BY user_id
ORDER BY total DESC
@mrmu
mrmu / gist:ab87723d54f720a6d603eeafa9660522
Last active April 28, 2023 09:06
使用 woocommerce 內建的 wc logger,將 debug 用的 log 記錄到後台 WooCommerce / 狀態 / 記錄 裡。
<?php
/*
* arg:
* $msg: 要紀錄的內容,可用 string/array
* $source_name: 此 log 的別名,方便於後台辨識
*/
function my_wc_log($msg, $source_name) {
if (function_exists('wc_get_logger')) {
$log = wc_get_logger();
@mrmu
mrmu / composer.json
Created August 5, 2017 05:00
2017 coscup - composer.json sample (放在網站根目錄)
{
"name": "coscup2017/iLoveWP",
"authors": [
{
"name": "AudiLu",
"email": "khl0327@gmail.com"
}
],
"autoload": {
"classmap": [
/*
This example demonstrate how to read pm2.5 value on PMS 3003 air condition sensor
PMS 3003 pin map is as follow:
PIN1 :VCC, connect to 5V
PIN2 :GND
<form target="_blank" method=post action="http://payment-stage.allpay.com.tw/Cashier/AioCheckOut"><input type='text' name='AlipayItemCounts' value='1'><BR><input type='text' name='AlipayItemName' value='交易測試(測試)'><BR><input type='text' name='AlipayItemPrice' value='100'><BR><input type='text' name='ChoosePayment' value='ALL'><BR><input type='text' name='ClientBackURL' value='http://www.allpay.com.tw/receive.php'><BR><input type='text' name='Email' value='stage_test@allpay.com.tw'><BR><input type='text' name='ItemName' value='交易測試(測試)'><BR><input type='text' name='MerchantID' value='2000132'><BR><input type='text' name='MerchantTradeDate' value='2015/09/02 11:25:14'><BR><input type='text' name='MerchantTradeNo' value='StageTest1441185914'><BR><input type='text' name='NeedExtraPaidInfo' value='Y'><BR><input type='text' name='PaymentType' value='aio'><BR><input type='text' name='PhoneNo' value='0911222333'><BR><input type='text' name='ReturnURL' value='http://www.allpay.com.tw/receive.php'><BR><input type='text