[PHP]CORS

public static function set_header_for_cors($domain = '*')
{
    header("Access-Control-Allow-Origin: ".$domain);
    header("Access-Control-Allow-Methods: GET, POST");
    header("Access-Control-Allow-Headers: Accept, Content-Disposition, Content-Type, Content-Length, Accept-Encoding");
}

[MySQL]AES 256 CBC

ivはDBに保存しているが16進数文字列でファイルに記述してもよい

SET block_encryption_mode = 'aes-256-cbc'
SET @key_str = SHA2('XXXXXXX',512)
SET @init_vector = RANDOM_BYTES(16) ※INSERTの時だけ実行
INSERT INTO `table_name`(shop,token,iv,created) VALUES(HEX(AES_ENCRYPT('ABC', @key_str,@init_vector)),HEX(AES_ENCRYPT('DEF', @key_str,@init_vector)),HEX(@init_vector),'2024-05-01 11:12:13')
UPDATE `table_name` SET shop = HEX(AES_ENCRYPT(:shop, @key_str,@init_vector)),token = HEX(AES_ENCRYPT(:token, @key_str,@init_vector)),iv = HEX(@init_vector),modified = '2024-05-01 11:12:13' WHERE id = 5
SELECT convert(AES_DECRYPT(UNHEX(shop), @key_str,UNHEX(iv)) USING utf8) AS shop,convert(AES_DECRYPT(UNHEX(token), @key_str,UNHEX(iv)) USING utf8) AS token,created FROM `table_name` WHERE convert(AES_DECRYPT(UNHEX(shop), @key_str,UNHEX(iv)) USING utf8) = 'ABC'

[WordPress]不要ページを無効化

/**
 * WordPress標準の不要ページを無効化
 * @param WP_Query $query
 */
function force_404($query)
{
    if(is_attachment() || is_author() || is_search() || is_date() || is_tag()){
        /** 404ページを返す */
        $query->set_404();
        /** 404コードを返す */
        status_header(404);
        /** キャッシュの無効化 */
        nocache_headers();
	}
}
add_filter('parse_query', 'force_404');

[JavaScript]ブラウザバック判定

isBrowserBack(){
    const perfEntries = performance.getEntriesByType("navigation");
    let result = false;
    perfEntries.forEach((perfEntry) => {
        if(perfEntry.type == 'back_forward'){
            result = true;
        }
    });
    return result;
}

[WordPress]不要なデフォルトmeta削除

/** meta name="generator" を非表示にする */
remove_action('wp_head', 'wp_generator');
/** EditURIを非表示にする */
remove_action('wp_head', 'rsd_link');
/** wlwmanifestを非表示にする */
remove_action('wp_head', 'wlwmanifest_link');
/** 短縮URLを非表示にする */
remove_action('wp_head', 'wp_shortlink_wp_head');
/** 絵文字用JS・CSSを非表示にする */
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
/** 投稿の RSS フィードリンクを非表示にする */
remove_action('wp_head', 'feed_links', 2);
/** コメントフィードを非表示にする */
remove_action('wp_head', 'feed_links_extra', 3);
/** dns-prefetchを非表示にする */
add_filter('wp_resource_hints', 'remove_dns_prefetch', 10, 2);
/**
 * @param array $hints
 * @param string $relation_type
 * 
 * @return array
 */
function remove_dns_prefetch($hints, $relation_type)
{
    if($relation_type === 'dns-prefetch'){
        return array_diff(wp_dependencies_unique_hosts(), $hints);
    }
    return $hints;
}
/** wp versionを非表示にする */
remove_action('wp_head','rest_output_link_wp_head');
/** oEmbedを非表示にする */
remove_action('wp_head','wp_oembed_add_discovery_links');
/** rel="next" rel="prev" を非表示にする */
remove_action('wp_head','adjacent_posts_rel_link_wp_head');
/** <meta name='robots' content='max-image-preview:large' />を非表示にする */
remove_filter('wp_robots','wp_robots_max_image_preview_large');

[JavaScript]Promise

getCart(){
    return new Promise((resolve,reject) => {
        const url = 'url';
        fetch(url)
            .then((response)=>{
                if (!response.ok) {
                    throw new Error();
                }
                return response.json();
            })
            .then((json)=>{
                resolve(json);
            })
            .catch((error)=>{
                reject(error);
            });
    });
}

this.getCart()
.then((json)=>{
    
})
.catch((error)=>{

});

[Docker]WordPress用yml

docker-compose.yml

version: "3.7"
services:
 db:
  image: mysql:8.0
  container_name: mysql8
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: password # rootユーザのパスワード
    MYSQL_DATABASE: wp_local # WordPress用DB名
    MYSQL_USER: wp_user # WordPress用DB接続ユーザ名
    MYSQL_PASSWORD: wp_password # WordPress用DB接続パスワード
 WordPress:
  image: wordpress:latest
  container_name: wordpress
  restart: always
  depends_on:
     - db
  ports:
     - 10090:80
  environment:
    WORDPRESS_DB_HOST: db:3306 # DBサーバ名:ポート番号
    WORDPRESS_DB_USER: wp_user # WordPress用DB接続ユーザ名
    WORDPRESS_DB_PASSWORD: password # WordPress用データベース接続パスワード
    WORDPRESS_DB_NAME: wp_local # WordPress用データベース名
    WORDPRESS_DEBUG: 0 # デバッグモードOFF
  volumes:
     - ./html:/var/www/html
 phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  container_name: phpmyadmin_ingrid
  restart: always
  depends_on:
     - db
  ports:
     - 10099:80

 
 

docker-compose up -d

 
PHPMyAdmin
http://localhost:10099/
 
WordPress
http://localhost:10090/