![](/manage/wp-content/themes/ktyrreport/images/icon-noimage.png)
![](/manage/wp-content/themes/ktyrreport/images/icon-noimage.png)
![](/uploads/20201207041337.png)
[Liquid]GETクエリの値を取得
参考:https://community.shopify.com/c/Shopify-Design/URL-Parameters-in-LIQUID/td-p/149761/page/2
function_get_query_value_by_key.liquid
{%- capture contentForQuerystring -%}{{ content_for_header }}{%- endcapture -%} {%- assign pageUrl = contentForQuerystring | split:'"pageurl":"' | last | split:'"' | first | replace:'\/','/' | replace:'%20',' ' | replace:'\u0026','&' -%} {%- assign get_query_value_by_key = '' -%} {%- if pageUrl contains "?" -%} {%- assign pageQuerystring = pageUrl | split:'?' | last | replace:'=','&' -%} {%- assign tmp = pageQuerystring | split:'&' -%} {%- for kv in tmp -%} {%- if kv == key -%} {%- assign get_query_value_by_key = tmp[forloop.index] -%} {%- break -%} {%- endif -%} {%- endfor -%} {%- endif -%}
使用時 typeの値を取得する
{%- include "function_get_query_value_by_key" key:"type" -%} get_query_value_by_key:{{get_query_value_by_key}}
※renderを使用すると親テンプレートへ値を渡せないためincludeを使用
![](/uploads/20180614095239-1.png)
[WordPress]get_post_by_post_name
public function get_post_by_post_name($post_name, $post_type = '', $post_status = 'publish') { global $wpdb; $sql = array(); $sql[] = "SELECT p.*"; $sql[] = "FROM $wpdb->posts AS p"; $sql[] = "WHERE p.post_name " . $this->__get_sql_for_in($post_name); if (!empty($post_type)) $sql[] = "AND p.post_type = '$post_type'"; if(!empty($post_status)) $sql[] = "AND p.post_status = '$post_status'"; $result = $wpdb->get_results(implode(' ', $sql)); if (empty($result)) return null; return is_array($post_name) ? $result : $result[0]; } protected function __get_sql_for_in($values, $is_number = false) { $quote = $is_number ? "" : "'"; $is_array = is_array($values); $not = ($is_array && is_string($values[0]) && preg_match('/^.*\!=.+$/',$values[0])) || (!$is_array && is_string($values) && preg_match('/^.*\!=.+$/',$values)); $in = $not ? ' NOT IN' : ' IN'; $eq = $not ? '!=' : '='; if($is_array){ foreach ($values as $i => $value) { $values[$i] = preg_replace('/^(\!=|=)/', '', esc_sql($value)); $values[$i] = preg_replace('/^ /', '', esc_sql($value)); } }else{ $values = preg_replace('/^(\!=|=)/','',esc_sql($values)); $values = preg_replace('/^ /','',esc_sql($values)); } return $is_array && 1 < count($values) ? "{$in} ({$quote}" . implode("{$quote},{$quote}", $values) . "{$quote})" : ($is_array ? "{$eq} {$quote}{$values[0]}{$quote}" : "{$eq} {$quote}$values{$quote}"); }
![](/uploads/20200902030224.png)
[GAS]セルの値をコピー
function copy_values() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var get_range; var set_range; for(var i = 4 ; i < 30 ; i+=2){ get_range = sheet.getRange("J"+i+":K"+i); set_range = sheet.getRange("J"+(i+1)+":K"+(i+1)); set_range.setValues(get_range.getValues()); } }
![](/uploads/icon-15.png)
[PHP]get_url_by_regex
public function get_url_by_regex($url = null,$replaces = null,$suffix = null) { $tmp = explode('?',empty($url) ? $_SERVER['REQUEST_URI'] : $url); $url = 0<count($tmp) ? array_shift($tmp) : ''; $tmp = 0<count($tmp) ? array_pop($tmp) : ''; $tmp = explode('&',$tmp); for($i=0;$i<count($replaces);$i+=2){ foreach ($tmp as $j => $q){ $tmp[$j] = preg_replace($replaces[$i],$replaces[$i+1],$q); } } $tmp = array_diff($tmp,array('')); $is_empty = empty($tmp); return $url.($is_empty?'':'?'.implode('&',$tmp)) . (is_null($suffix)?'':($is_empty?'?':'&').preg_replace('/^[\?&]/','',$suffix)); }
![](/manage/wp-content/themes/ktyrreport/images/icon-noimage.png)
[SSH]SSHトンネル@WinSCP
SFTP
xxx.xxx.xxx.xxx
22
ID:xxxxxx
PW:yyyyyy
・設定
-トンネル
チェック:SSHトンネルを経由して接続する
nnn.nnn.nnn.nnn 50001
ID:mmmmmm
PW:pppppp
ローカルトンネルポート 自動選択
秘密鍵 id_rsa.ppk
-SSH 認証
チェック エージェントの転送を許可する
秘密鍵 filename.ppk
![](/uploads/icon-15.png)
[PHP]CSV出力@メモリ節約
$csvfile = date('YmdHis') . ".csv"; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $csvfile); $fp = fopen('php://output','w'); stream_filter_append($fp, 'convert.iconv.UTF-8/CP932', STREAM_FILTER_WRITE); fputcsv($fp, array('A','B','C')); fclose($fp);
![](/uploads/20180614095234.png)
[PHP,Ruby]Instagram Graph API
PHP
<?php function echo_json_by_filename($filename) { header("Content-Type: application/json; charset=utf-8"); if(is_readable($filename)) { readfile($filename); }else{ echo '{data:[]}'; } } $businessID = '111111'; $hashTagID = '17843677603040508';//パスタ $targetInstaUsername = isset($_GET['u']) ? $_GET['u'] : ''; $targetFileNo = isset($_GET['no']) ? $_GET['no'] : ''; $apiBaseUrl = 'https://graph.facebook.com/v5.0/'; $accessToken = 'abcdefg'; $urlForHashTag = "{$apiBaseUrl}{$hashTagID}/recent_media?user_id={$businessID}&fields=id,media_type,media_url,permalink,like_count,comments_count&limit=50&access_token={$accessToken}"; $urlForUsername = "{$apiBaseUrl}{$businessID}?fields=business_discovery.username({$targetInstaUsername}){id,followers_count,media_count,ig_id,media{caption,permalink,username,media_url,media_type,like_count,comments_count,timestamp,id}}&access_token={$accessToken}"; $urls = array($urlForHashTag,$urlForUsername); $nos = array_keys($urls); $filename = dirname(__FILE__) . "/insta{$targetFileNo}.json"; if(empty($targetInstaUsername) || !is_numeric($targetFileNo) || !in_array($targetFileNo,$nos)){ echo_json_by_filename($filename); exit; } if(file_exists($filename)){ $t = filemtime($filename); if($t === false || abs($t - time()) < 60){ echo_json_by_filename($filename); exit; } if(unlink($filename) === false){ echo_json_by_filename($filename); exit; } } $data = file_get_contents($urls[$targetFileNo]); file_put_contents($filename,$data); header("Content-Type: application/json; charset=utf-8"); echo $data;
Ruby
#!/Ruby23-x64/bin/ruby # coding: utf-8 ENV['SSL_CERT_FILE'] = File.expand_path('/cert/cacert.pem') require "cgi" require "net/https" require "uri" require "date" def echo_json_by_filename(filename) puts "Content-Type: application/json; charset=utf-8\n\n" if File.exist?(filename) then File.open(filename, "r") do |f| puts f.read end else puts "{data:[]}" end end cgi = CGI.new businessID = "111111" hashTagID = "17843677603040508"#パスタ targetInstaUsername = cgi["u"] targetFileNo = cgi["no"] apiBaseUrl = "https://graph.facebook.com/v5.0/" accessToken = "abcdefg" urlForHashTag = apiBaseUrl + hashTagID + "/recent_media?user_id="+businessID+"&fields=id,media_type,media_url,permalink,like_count,comments_count&limit=50&access_token=" + accessToken urlForUsername = apiBaseUrl + businessID + "?fields=business_discovery.username("+targetInstaUsername+"){id,followers_count,media_count,ig_id,media{caption,permalink,username,media_url,media_type,like_count,comments_count,timestamp,id}}&access_token=" + accessToken filename = "./insta"+targetFileNo+".json" if targetInstaUsername.empty? || targetFileNo.empty? then echo_json_by_filename(filename) exit end if File.exist?(filename) then gap = DateTime.now.to_time - File.mtime(filename) if gap < 60 then echo_json_by_filename(filename) exit end File.delete(filename) end uri = URI.parse urlForUsername http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true req = Net::HTTP::Get.new uri.request_uri res = http.request req file = File.open(filename,"w") file.puts(res.body) puts "Content-Type: application/json; charset=utf-8\n\n" puts res.body exit
![](/uploads/20180614095239-1.png)
[WordPress]wp_head不要タグ削除
remove_action( 'wp_head', 'wp_resource_hints', 2 ); remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 ); remove_action( 'wp_head', 'feed_links_extra', 3); remove_action( 'wp_head', 'wp_generator'); remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'wp_head', 'wp_print_styles', 8 );
![](/uploads/20180614095237.png)
[Apache].htaccessクエリ置換
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} (^|.*&)id=100($|[^0-9])(.*) RewriteRule ^search.*$ http://%{HTTP_HOST}%{REQUEST_URI}?%1id=200%2%3 [R=301,L] </IfModule>
id=100をid=200に置換してリダイレクト
id以外のクエリはそのまま