[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)=>{

});

[Laravel]seeder備忘録

 
seeder作成

sail artisan make:seeder PostSeeder

 
PostSeeder.php追記

public function run(): void
{
    \App\Models\Post::create([
        'title'   => 'あいうえお',
        'body'    => 'かきくけこ',
        'user_id' => 1,
    ]);
}

 
PostSeeder実行

sail artisan db:seed --class=PostSeeder

 
factory作成

sail artisan make:factory PostFactory

 
PostFactory

public function definition(): array
{
    return [
        'title'   => fake()->text(20),
        'body'    => fake()->text(50),
        'user_id' => \App\Models\User::factory(),
    ];
}

 
必要なら.env修正

'faker_locale' => 'ja_JP'

 
DatabaseSeeder.php修正

use App\Models\Post;

runメソッドにある元ソースは削除

public function run(): void
{
    Post::factory(3)->create();
}

 
DatabaseSeeder実行

sail artisan db:seed

 
エラー「Call to undefined method App\Models\Post::factory()」の対処
Models\Post.phpに下記を追記

use Illuminate\Database\Eloquent\Factories\HasFactory;

class Post extends Model
{
    use HasFactory;
}

[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/

[JavaScript]文字列から漢字抽出

文字列から漢字抽出

const str = 'ひらがな小林カタカナ漢字';
const pattern = /(\p{scx=Han}+)/ug;
const matches = str.match(pattern);
console.log(matches);

出力

(2) ['小林', '漢字']

[WordPress]先祖postへのリンクを出力する

function get_parents($post,$parents = array())
{
    if (!empty($post->post_parent)){
        $parent = get_post($post->post_parent);
        array_unshift( $parents, $parent);
        return get_parents( $parent, $parents );
    }
    return $parents;
}
function the_parents($post,$format)
{
    $parents = get_parents($post);
    if(!empty($parents)){
        foreach($parents as $i => $parent){
            $html = $format;
            $html = preg_replace('/%permalink%/',get_permalink($parent->ID),$html);
            $html = preg_replace('/%title%/',esc_html($parent->post_title),$html);
            echo $html;
        }
    }
}