2024年12月26日

正規表現 regex

\r\n 改行
^ 行頭
$ 行末
. どんな文字でも
.* どんな文字でも0以上続く
* 直前の要素が0回以上
+ 直前の要素が1回以上
* 直前の要素が0回以上
.0 どんな文字でも0以上続く
[abc] aかbかc = a|b|c
[^abc] aかbかc以外
[a-z] aからzのどれか
[a-z0-9] aからz,0から9のどれか
(.*) どんな文字でも0以上続く文字列をグループ化
$1 1つ目のグループ

使用例

ピリオドを照合

\.

[特定の文字]が含まれる行

^.*特定の文字.*\r\n

htmlの中身の文字列はそのままタグだけ置換

検索
<strong>(.*)</h3>
置換
<strong>$1</strong>
2024年12月6日

Sourcetree設定

GitHubアカウント追加【OAuth認証】

GitHubにログインしておく

既定のブラウザでGitHubにログインしておく

Sourcetreeからアカウント追加

ツール > オプション > 認証 > 追加

ホスティングサービス:GitHub
優先するプロトコル:HTTPS
認証:OAuth
[OAuthトークンを再読み込み]

ブラウザが立ち上がる
[Authorize atlassian]

GitHubアカウント追加【tokenで認証】

※HTTPSのURLでクローンができない場合アカウント追加をtoken認証方式にする

GitHubからtoken設定

setting > Developer Settings > Tokens (classic) > Generate new token (classic)

Note:sourcetree(任意)
Expiration:No Expiration
Select scopes:repo,userにチェック
発行されたtokenをコピー

Sourcetreeからアカウント追加

ツール > オプション > 認証 > 追加

ホスティングサービス:GitHub
優先するプロトコル:HTTPS
認証:Personal Access Token
[Personal Access Tokenを再読み込み]

アカウント:アカウント名
パスワード:tokenを貼り付け

pushするときのユーザー情報設定(リポジトリごと)

右上「設定」 > 詳細

メールアドレスはgithubに登録してあるものに登録しておくとgithub上でそのアカウントからのpushと判断される
githubアカウントと紐づくメールアドレスは右上setting > Emails https://github.com/settings/emails
適当な@github.comアカウントは存在するユーザーであるとそのユーザーからのpushと判定される

HTTPSのURLでGithubからCloneできない時【方法1】

tokenで認証でGitHubアカウントをSoucetreeに追加するとHTTPSでクローンできるようになる

HTTPSのURLでGithubからCloneできない時【方法2】

SSHのアドレスでクローンできるよう設定する

SourceTreeでSSHキーを生成

ツール > SSHキーの作成/インポート

  • [Generate]
  • ウィンドウの中でマウスを適当に動かし緑のバーを進める
  • public keyをコピー
  • [Save private key] でrsa-key-soucetree.ppkを保存(フィアル名任意)
※[Key pathphrase]と[Confirm pathphrase]は空欄にする。プッシュやフェッチの度にパスフレーズを入力することになるため

GitHubに公開鍵を登録

右上アイコン内setting > SSH and GPG keys

https://github.com/settings/keys
  • New SSH Key
  • title: rsa-key-soucetree(任意)
  • Key: publick keyをペースト
  • Add SSH Key

SourceTreeに秘密鍵を登録

ツール > SSHエージェントを起動...

  • タスクバー帽子パソコンアイコンをタブルクリック
  • Add Key.ppkファイルを登録
  • close

SourceTreeでクローンする

git@github.comからはじまるSSHのリポジトリのURLを入力

SourceTree SSHの設定

ツール > オプション > SSH クライアントの設定

SSHが起動してないとgithubとのやりとりができない

Git Bash

フォントサイズの変更

タイトルバーを右クリック > Option > Text > Font

2024年11月26日

php日付時間曜日の操作 date

今日

$hoy = date('Y-m-d');

明日

$manana = date('Y-m-d', strtotime('+1 day'));

今月末日

$estemes = date('Y-m');
$finaldeestemes = date($estemes.'-t');

2つの日付の日数差

$time1 = strtotime('2019-04-01');
$time2 = strtotime('2018-04-01');
$differece = ($time1 - $time2) / (60 * 60 * 24);

日付を日本語で表示

$fecha = '1999-10-10';
$dia = date("m月d日", strtotime($fecha));

曜日を日本語で表示

$fecha = '1999-10-10';
$week = array( "日", "月", "火", "水", "木", "金", "土" );
$diadesemana = $week[date("w", strtotime($fecha))];

日付条件分岐

wordpressの場合はcurrent_timeを使う
そうでない場合はdateを使う
if (current_time('Y-m-d H:i:s') < '2024-11-29 17:00:00') {
//その日以降非表示
} else{
//その日以降表示
}                                 

SQL

今日以降

 `date` >= "'.$hoy.'"

昨日以前

`date` < "'.$hoy.'"
2024年11月1日

WinSCP

WinSCP アップデートによる環境設定変更をもとに戻す設定

環境 > ウィンドウ > その他

最後のセッションを閉じた後の起動時にログインを表示 チェック入れる
すべてのセッションを閉じてもウィンドウを閉じない チェック入れる

エディタの設定

環境 > エディタ 追加 外部エディタで以下を読み込む
Atom

C:\Users\USERNAME\AppData\Local\atom\atom.exe

Pulsar

C:\Program Files\atom.exe\Pulsar.exe

一番上に移動しOK

WinSCP コマンドラインの履歴を削除

Windowsのレジストリエディタregedit から

HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Configuration\History

2024年10月25日

.htaccess

URL Redirect

# 特定のURLを301リダイレクト

RewriteEngine On
RewriteBase /
RewriteRule ^news/$ https://domain.com/news.php [R=301,L]
RewriteRule ^news/$ /news.php [R=301,L]

domain.com/news.php → domain.com/news/

# ドメイン変更のため301リダイレクト 一部のディレクトリは除く

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/images/)
RewriteCond %{REQUEST_URI} !(^/videos/)
RewriteRule ^$ https://new.com/ [R=301,L]

old.com → new.com
old.com/images/ → old.com/images/

# httpsにリダイレクト

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# wwwありにリダイレクト

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R,L]

#.html .php なしにリダイレクト

RewriteCond %{THE_REQUEST} ^.*\.(php|html)
RewriteRule ^(.*)\.(php|html)$ https://domain.com/$1 [R=301]

URL Custom

# リダイレクトさせずに2つURLを存在させる

特定のページでスラッシュありでもなしでも同じページを表示
RewriteRule ^blog/$ /blog [L]
スラッシュありでも.phpでも同じページを表示
RewriteRule ^(.*)/$ /$1.php [L]

# URL末尾の.phpなしにする

#さくらのレンタルサーバーではこの設定がでデフォルトでされてる(htmlも)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

# パラメーター値をスラッシュ区切りにする

RewriteRule ^blog/(.*)/$ /blog/page.php?p=$1

domain.com/page.php?p=101 → domain.com/blog/101/

# URL末尾にスラッシュを入れる

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{REQUEST_URI} !\.[^/\.]+$
    RewriteRule .* %{REQUEST_URI}/ [R=301,L]
</IfModule>

#ファイル名最初のアンダーバーをスラッシュ区切り

区切る前の文字列はあらかじめ指定しておく必要がある

アンダーバー1つ用

RewriteRule ^admin/(shop|user)/([0-9a-z_-]+)\.php$ /admin/$1_$2.php [L]

domain.com/shop_test.php → domain.com/shop/test.php

アンダーバー2つ用

RewriteRule ^admin/(shop|mail|news)/([0-9a-z_-]+)/([0-9a-z_-]+)\.php$ /admin/$1_$2_$3.php [L]

domain.com/news_test_test.php → domain.com/news/test_test.php

Wordpress DIRECTORY

# wordpressがある階層からwordpressパーマリンク機能を除外する階層を指定

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 除外するディレクトリを追加 ↓
RewriteCond %{REQUEST_URI} !(^/otrodirectorio/)
# 除外するディレクトリを追加 ↑
RewriteRule . /index.php [L]
</IfModule>

アクセス権限操作

# Bacis認証

AuthType Basic
AuthName  "Restricted Page"
Require valid-user
AuthUserFile  /home/.htpasswds/domain.com/.htpasswd

# Bacis認証から特定のIPアドレスを除外

<RequireAny>
Require ip 00.00.0.000
Require valid-user
</RequireAny>
2024年7月12日

.gitignore

.gitignoreが効かない?

一度ステージに入れたファイルはコミットしてなくてもgit管理下に入り、後から .gitignore に追加しても無視されない。後から無視する場合は一度削除しそれをコミットする必要がある。

手動で後からgitignoreで無視する手順

①ローカルリポジトリから無視したいファイル/ディレクトリを一旦削除
②gitignoreに記述
③commit(&push)
(④ローカルリポジトリに削除したファイル/ディレクトリを戻す)

コマンドで後からgitignoreで無視する手順

①ローカルリポジトリで以下のコマンド
git rm --cached -r [削除したいディレクトリ]
git rm --cached [削除したいファイル]
②gitignoreに記述
③commit&push
ローカルにはファイルは残ったままリモートからは消える。

WordpressのテーマフォルダだけGit管理する

ドメイン直下にgitを設置した場合の.gitignoreファイル
.htaccess
license.txt
readme.html
index.php
xmlrpc.php
wp-*.php
wp-admin/*
wp-includes/*
wp-content/*
!wp-content/themes
wp-content/themes/*
!wp-content/themes/themefoldername
※重要:無視するファイル・ディレクトリがすでにgit管理下にある場合あとからgitignoreしても効かない。あとから無視する場合はローカルでファイルを削除しpushする。
2024年7月11日

Git Commands

ローカル準備

gitのインストール

git for windows
Git Bash(コマンドターミナル)、Git CMD、Git GUIも同時にインストールされる。 それが不要な場合はgit-scm.comからインストールもできる。

gitの命令操作

Sourcetree
命令手段は2つ
・コマンドターミナルからコマンドを打つ
・Sourcetreeのソフト画面上からボタン操作

コマンドターミナルを開く

Sourcetreeを開き Shift + Alt + T または右上「ターミナル」でGit Bashを開ける。開く前に操作したいプロジェクト、ブランチが選べてることを確認する。

Git Bashの設定変更

Git Bashを開く > タイトルバーを右クリック > Option

コマンドを打つ

modifiedを取り消す

git checkout -- .

untracked fileを削除

git clean -f

ファイル・ディレクトリ削除

ローカルから削除:pushすればリモートからも消える
git rm -r [削除したいディレクトリ]
git rm [削除したいファイル]
リモートから削除:pushすればリモートのみ消える
git rm --cached -r [削除したいディレクトリ]
git rm --cached [削除したいファイル]

直前commit,addの取り消し

直前のcommitを取り消す。ローカルのファイル変更は残ったまま。リモートのHEADはそのままの位置に残りローカルのHEADだけが戻る。ローカルがbranchされステージ状態。
(github desktopからターミナルを立ち上げた場合は""が必要 例:"HEAD^")
git reset --soft HEAD^
commitとaddを取り消す。ローカルのファイル変更は残ったまま。リモートのHEADはそのままの位置に残りローカルのHEADだけが戻る。ローカルがbranchされstage前の状態。
git reset --mixed HEAD^
直前の commitとaddを取り消す。ローカルのファイル変更が全てが戻る。リモートのHEADはそのままの位置に残りローカルのHEADだけが戻る。branchされない。
git reset --hard HEAD^

resetの取り消し

直前のreset --hard HEAD^を戻す
git reset --hard HEAD@{1}

変更の一時戻し、一時保管

未commitの変更ファイルを全て一時的に元に戻す。そのため他のbranchへ移動できる。ファイル変更情報はどこのbranchにも属さないものとして一時保管される。保存されたstashは消えない。
git stash
一時保管された変更ファイルを今いるbranchへ適用
git stash apply
一時保管された変更ファイルを今いるbranchへ適用 + 一時保管されたstashを削除
git stash pop
過去のstashされた一覧
git stash list
最新の一時保管されたstashひとつを削除
git stash drop
最新の一時保管されたstash全て削除
git stash clear

強制push

git push -f

pushを取り消す手順

直前の状態に戻し
git reset --hard HEAD^
強制プッシュ(mainブランチ)
git push -f origin main

soucetreeで強制プッシュする場合

ツール > オプション > Git >「強制pushを有効にする」にチェックを入れておく
プッシュ(強制プッシュにチェック)

GitHub 2段階認証ログイン設定

ログイン設定

Settings > Password and authenticationから2段階認証(Two-factor authentication)を設定した場合IDPWだけではログインできない。 2段階認証の方法は複数あるがブラウザの拡張機能を使うAuthenticator app方式で設定する。

Authenticator appでの2段階認証設定

Firefox拡張機能:Authenticatorをあらかじめ入れておく

Settings > Password and authentication > Two-factor methods > Authenticator app

①ブラウザ右上パズルピースマーク内にある拡張機能Authenticatorを開き右上QRコードマークを押しブラウザ上のQRコードを選択しスキャン
②生成された数字をVerify the code from the app に入力 Save。ここで生成された数字は保管する必要ない。

設定したのにAuthenticator appでログインできない時のために

Recovery optionsからTwo-factor recovery codesを保存しておく

ログイン方法

Authenticator appでの2段階認証ログイン方法

①IDPWを入力
②Firefoxの拡張機能 Authentication code で数字を生成
③生成された数字を入力

リカバリーコードでのログイン方法

①IDPW入力
②Use a recovery code or begin 2FA account recoveryを選択
③リカバリーコードを一つコピーし入力

Clone

他人の管理するリポジトリの場合はコラボレーター招待してもらう
他人を招待する場合はGitHubの各リポジトリページ Setting > Collaborators

Clone用URL取得 - Clone using the web URL

Github の各リポジトリページの「<>Code」(緑のボタン)

https://github.com/githubusername/projectname.git

Sourcetree から

Ctrl + T > Clone

Pulsar Edi(旧Atom) から

Ctrl + Shift + p

github:clone

2024年6月28日

SouceTree 樹形図操作

2つのブランチ、1本の樹形図を2本にする方法

2つのブランチ(main,develop)を樹形図上2本にしてMergeの履歴が残る形にする。

①mainとdevelopが同じ位置【樹形図は1本の状態】
②developを変更し、コミットする→developが一つ進すすむ【樹形図は1本の状態】
③mainにcheckout。
④mergeしたいブランチ(develop)を右クリック「現在のブランチにdevelopをマージ」
⑤「ファストフォワード可能でも新たなコミットを作成する」にチェック
⑥OK【樹形図が2本になる】
※以降マージするときはチェックを入れなくてもマージコミットされ、樹形図2本状態が続く。
※1本に戻したいときはmainをdevelopにマージする

「ファストフォワード可能でも新たなコミットを作成する」とは?

ファストフォワード(マージの履歴が残らないマージ)だけどマージを一つのコミットとして履歴を残すこと。
2024年6月12日

ACFタクソノミーを利用した場合の情報取得

カテゴリーをグループ分けしたい場合にはAdvanced Custom Fieldタクソノミーで種類別カテゴリ機能を追加。 ACFタクソノミーを利用した場合の情報取得。

特定のタクソノミー一覧

$terms = get_terms( array(
  'taxonomy' => 'area',//タクソノミーキー
  'hide_empty' => false,
));
foreach ( $terms as $term ) {
  $term->term_id ;
  $term->name ) ;
  $area_link = get_term_link( $term);
}

idから特定のタクソノミーの属する記事一覧

query_posts(array(
  'posts_per_page' => 15,
  'tax_query' => array(
    array(
      'taxonomy' => 'area',//タクソノミーキー
      'field' => 'term_id',
      'terms' =>  $areaid//配列でも可
    ),
   ),
   //かつ
  'cat' => 1,
));

自分のタクソノミーページで条件を絞った記事一覧

archive.php

$taxonomy = get_query_var( 'taxonomy' );//今いる自分のタクソノミーキー
$taxonomy_term_id = get_queried_object_id();//今いる自分のタクソノミーID
query_posts(array(
  'posts_per_page' => -1,
  'tax_query' => array(
    array(
      'taxonomy' => $taxonomy, //タクソノミーを指定
      'field' => 'term_id', //ターム名をIDで指定する
      'terms' =>  $taxonomy_term_id //表示したいタームID //配列でも可
    ),
   ),
   //かつ
  'cat' => 2,
));

自分の記事が属する特定のタクソノミー一覧

$area_categories = get_the_terms($post->ID, 'area');//タクソノミーキー指定
if ( $area_categories ) {
  foreach ( $area_categories as $area_category ) {
      $area_id = $area_category->term_id;
      $erea_name = $area_category->name;
      $area_link = get_term_link( $area_category );
  }
}

カテゴリ(タクソノミー)に属するフィールド値取得

通常カテゴリーでもACFタクソノミーカテゴリーでもID指定は category_数字 の形。
get_field('categoria_imagen','category'.'_'.$area_id);//フィールド名指定
2024年2月16日

X-Mouse Button Control 設定 / KensingtonWorks

KensingtonトラックボールとX-Mouse Button Controlを組み合わせして使用する設定。同時押しではなく順番押し(Button Chording)設定が可能なためKensintonWorksよりパターンが設定可能。上のボタン2つを有効化するためKensintonWorksのインストールも必要。 X-Mouse Button Control KensintonWorks

X-Mouse Button Control

トラックボールではなくチルト機能つきのマウスを使う時用の設定

Layer 2 (For Microsoft 3600)

Left Button Button Chording
左・右
Right Button Button Chording 右・左
Middle Button Simulated Keys (Pressed){DEL}
Tilt Wheel Left Enter Enter
Tilt Wheel Right Simulated Keys (Pressed){BACKSPACE}

Layer 1 (For Slimblade/Expert Mouse)

KensingtonWorksインストール直後のデフォルト設定は左上は「中央クリック」右上は「戻る」になっている。X-Mouse Button Controlではそれぞれ「Middle Button」「Mouse Button 4」の扱いになる
Left Button Button Chording 左・右  
左・右上 Backspace
左・左上
Right Button Button Chording 右・左  
右・右上 Delete
Middle Button Button Chording 左上・左  
左上・右上 Home
左上・右  End
Mouse Button 4 Enter 右上 Enter
※選択肢にキーがない場合はSimulated Keysを選択し、「{}」から選択できる
※順番押し設定はButton Chordingを選択(先に押すボタン)、2つ目のボタンを次の画面で設定
※マススのスピードもX-Mouse Button Controlから変更する option > override mouse speed
レイヤーの切り替えはタスクバー内のアイコンを右クリック layersから選択可
※レイヤー1が必ずデフォルト。レイヤー2をデフォルトにしたい場合はlayer name横のlayer swapで1と2を入れ替える。

Windows起動時に自動起動するアプリを無効化

タスクバー 右クリック > タスクマネージャー > スタートアップアプリ

不具合

FireFoxのレスポンシブモードでの操作時に不具合がでる

KensingtonWorks

SlimBlade/Expert Mouseの上のボタン2つを有効にするためにいれるソフト。
ポインターのスピード設定のみでボタンの設定はしない

設定ファイルの場所

デバイスをKensington Worksの選択肢から削除したいときは設定フィアルから該当のdevicesらしきものを削除

C:\Users\ユーザー名\AppData\Roaming\Kensington\TrackballWorks\TbwSettings.json

2024年2月13日

Pulsar

Core

プロジェクトサイドバーに表示させないものを設定

Ignored Namesに拡張子で指定

*.wav, *.mp3, *.png, *.jpg, *.psd, *.ai, *.pdf, .git, .hg, .svn, .DS_Store, ._*, Thumbs.db, desktop.ini

Ignored Names を有効にする方法

プロジェクトサイドバーに表示させないファイル指定後にすること

Package > 検索「tree-view」 > Settings > Hide Ignored Names にチェック

新規タブで開く

ファイルをダブルクリックして新規タブで開くようにする。

Allow Pending Pange Itemsのチェックを外す

Editor

インデントの線を表示

Show Indent Guide にチェック

インデントの長さ設定

Tab Length を3に

折り返し設定

これで日本語折返される

Soft Wrap にチェック

折り返しの縦線の位置

Preferred Line Lengthで数値設定

そこで折り返す場合はSoft Wrap at Preferred Line にチェック

Keybindings

ショートカットキー編集

keymap.csonを開く

Keybindings > your keymap file というリンクをクリック

Ctrl + Tab での切り替わるタブの順番を変更

タブを1つづつ右へ移動させるように設定するには以下のコードをkeymap.csonへ貼り付ける
'body':
   # ctrl-tabによるタブ順を1つづつ右へ移動させるように設定
   'ctrl-tab ^ctrl': 'unset!'
   'ctrl-tab': 'pane:show-next-item'
   'ctrl-shift-tab ^ctrl': 'unset!'
   'ctrl-shift-tab': 'pane:show-previous-item'
これでCtrl + Shift + Tab で左にひとつづつなる。

Core Packages

Pulsar でclass と入力したときclassName,classListが候補にでる原因はautocomplete-html機能。Atomではこの現象は起きない。

Themes

プロジェクトツリー内のファイルアイコンの色を拡張子ごとに変える

[your stylesheet]をクリックしユーザースタイルシートを編集
C:\Users\ユーザー名\.pulsar\styles.less
.icon-file-text {&[data-name$=".php"]:before      { color:#5e8a6a; }}
.icon-file-text {&[data-name$=".html"]:before     { color:#916456; }}
.icon-file-text {&[data-name$=".css"]:before      { color:#fff; }}
.icon-file-text {&[data-name$=".js"]:before       { color:#0865a7; }}
.icon-file-text {&[data-name$=".htaccess"]:before { color:#8a8c50; }}
※アイコンを変更できるパッケージfile iconを使うとプロジェクト内フォルダ展開時に多少遅延あり

Install

ダブルクリックして選択した単語と同じ単語をハイライトさせる

highlight-selected

テキストを選択後Shift + Alt + Wでタグで囲える

atom-wrap-in-tag

全角スペースを視覚化する

show-ideographic-space.

パッケージが保存されるフォルダは
C:\Users\ユーザー名\.pulsar\packages

コマンドパレットCtrl + Shift + Pで使うコマンド

自動成形

Editor:Auto Indent

プロジェクトを開き直す

Application:Reopen Project

2023年5月26日

slick slider advanced technic

CDN 外部読み込みファイル

<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css"/>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script>

基本設定テンプレ

$('.slideA').slick({
  infinite: true,
  centerMode: true,
  centerPadding:'0px',
  autoplaySpeed: 0,
  autoplay:true,
  speed: 4000,
  autoplaySpeed:6500,
  arrows: false,
  pauseOnFocus: false,
  pauseOnHover: false,
  pauseOnDotsHover: false,
  dots: false,
  slidesToShow: 1,
  slidesToScroll: 1,
  fade: false,
  responsive: [
    {
    breakpoint: 1200,
      settings: {
        centerPadding: '330px',
        slidesToShow: 1
      }
    },
    {
      breakpoint: 720,
      settings: {
        fade: false
      }
    }
  ]
});

html

<div class="slideA">
	<img src="images1.jpg">
	<img src="images2.jpg">
	<img src="images3.jpg">
</div>

次のスライド(右端)だけを少しはみ出だして表示

javascript

$('.derecho').slick({
  centerMode: true,
  centerPadding: '40px',
});

css

.derecho .slick-track{
  margin-left: -40px;/*centerPaddingの数値とあわせる*/
}

スライド間の余白

.slick-slide直下のコンテンツの横幅を減らして調節する。画像だけの場合は

css

.slick-slide img{
  width:90%;
  margin:0 auto;
}
2023年5月22日

ハードディスクエラーとその対処法

「未割り当て」データを消さずに復旧

TestDiskでパーティションを復旧する
TestDisk

1.testdisk_win.exeを起動
2.[No log] Enter
3.該当のドライブを選択[Proceed]Enter
4.[Intel]Enter
5.[Analyse]Enter
6.[Quick Search]Enter
7.該当のパーティションを選択Enter
8.緑の行が表示されていればP中身のフォルダが表示されればQで戻る
9.[Write]Enter Yで確定
10.パソコンを起動

これで未割り当てでなくなりwindowsのエクスプローラ内に表示される
参考
「未割り当て」状態のHDD・SSDを修復する方法
未割り当ての外付けハードディスクのパーティションを復旧してデータを復元する - Windows 10
「TestDisk」の使い方

フォーマットする必要があります

これで未割り当てでなくなったあと該当ドライブが「フォーマットする必要があります」とエラーになる場合は、 Windows PowerShell (管理者)またはコマンドプロンプト (管理者)で復旧

Dドライブの場合

chkdsk d: /f
復旧完了

TestDiskでThe following partition can't be recovered

「RAWドライブにCHKDSKは使用できません」ので TestDiskで「未割り当て」RAWパーティションを検出するが復旧できない場合は MiniTool Partition Wizard Enterprise 12 を使う

パーティションの復元 次へ
該当ドライブを選択 次へ
スキャン範囲 ディスク全体 次へ
スキャン方式 クイックスキャン 次へ
完了
復元されたパーティションを右クリック「ドライブ文字の変更」でドライブレターを割り当てる
適用

未割り当てパーティションからデータを復元する方法

それでもThe following partition can't be recovered

ブートセクタが破損しているか確認

1.testdisk_win.exeを起動
2.[No log] Enter
3.該当のドライブを選択[Proceed]Enter
4.[Intel]Enter
5.[Advanced]Enter
6.該当のパーティションを選択Enter

Boot sector、Backup boot sectorともにStatus: Badの場合は

7.[Rebuild BS] Enter Yで確定

復旧完了
「TestDisk」によるブートセクタの修復

不明 初期化されていません 

ディスクの初期化しようとすると「存在しないデバイスを指定しました」
testdiskでは認識しない
chkdskもできない
復旧不可

ハードディスクが「初期化されていません」と表示される
https://ameblo.jp/kagayaitakisetu/entry-12324682409.html

Windows Install/Update 起きる問題とその対処法

Windows Update

問題:Windows Update エラー 0x80004005

Windows Update時最後の再起動の途中でアップデートが失敗し、Windows 10 22H2にアップデートできない。

解決法

なにをやってもアップデート不可のためOS再インストール(クリーンインストール)

Windows Install

問題::再インストールの際インストール場所が選べない

エラーメッセージ「MBRパーティションテーブルがあります。EFIシステムではGPTディスクのみにWindowsをインストールできます」

解決法

・すべての(たぶん3つ)パーティションを「削除」
・「新規」ボタンをクリック→また3つパーディションが新たにできる

Windows 10 Clean Install

・4.5 GB以上の空のUSB フラッシュ ドライブ
・windows 10 プロダクトキー
・Windowsをインストールする空のSSDハードディスク
Window 10
「ツールを今すぐダウンロード」
2023年5月19日

SSH 接続とコマンド

Download PuTTY putty-64bit-0.80-installer.msi

コマンド画面の文字の大きさ変更

Window > Appearance > Font Setting

変更後Session に戻ってSaveする

SSH接続 (coreserver)

キーを作成

coreserverコンパネ > ツール > SSH設定 キーを作成

・ID:[core]_rsa(鍵のファイル名になる)
・承認にチェック
・コメント [aaa](パスワードヒント)
・パスワード [aaa](秘密鍵変換時、ログイン最後に入力するpassphrase)

秘密鍵をダウンロード

coreserverコンパネ > ツール > ファイルマネージャー

.ssh 内のcore_rsa をダウンロード(拡張子は.html)
※puTTYgenで.ppkに変換する

puTTYでサーバーにSSH接続

Sesstion
・Host Name : v2004.coreserver.jp
・Port : 22
Connection - Data
・Auto-login username : コンパネのユーザー名(ログインID)
Connection - SSH - Auth - Credentials
・Private key file authentication から変換保存した.ppkを選択
Sesstion
・Saved Sessions に名前を付けて Save
Open

コマンド画面でパスワード入力

キー作成時に設定したパスワードを入力(入力しても何も表示されない、カーソルも動かない)
 
Enter

SSH接続 (xserver)

SSH設定

xserverコンパネ > SSH設定

・[国内からのアクセスのみ許可]をON
・「パスフレーズ」を設定し公開鍵認証用鍵ペア.keyファイルをダウンロード
※puTTYgenで.ppkに変換する(要パスフレーズ)

puTTYでサーバーにSSH接続

Sesstion
・Host Name : サーバーID.xsrv.jp
・Port : 10022
Connection - Data
・Auto-login username : サーバーID
Connection - SSH - Auth - Credentials
・Private key file authentication から変換保存した.ppkを選択
Sesstion
・Saved Sessions に名前を付けて Save
Open

コマンド画面でパスワード入力

設定したパスフレーズを入力(入力しても何も表示されない、カーソルも動かない)
 
Enter

SSH接続 (conoha wing)

秘密鍵をダウンロード

conohaコンパネ > サーバー管理 > SSH > + SSH key

タグネームを付けて保存
.pemをダウンロード

秘密鍵を.pemから.ppkに変換

puTTYgenを起動
[Load].pemを選択(ファイル形式のフィルタを「All Files (*.*)」に変える)
[Save private key] 名前を付けて保存

puTTYでサーバーにSSH接続

Sesstion
・Host Name : www222.conoha.ne.jp
・Port : 8022
Connection - Data
・Auto-login username : 秘密鍵を取得した画面からコピペ
Connection - SSH - Auth - Credentials
・Private key file authentication から変換保存した.ppkを選択
Sesstion
・Saved Sessions に名前を付けて Save
Open

MYSQL コマンドでMySQLデータをインポート

あらかじめしておくこと

・空のデータベースを用意しておく
・sqlファイルをFTPでドメイン直下にアップしておく

mysql -u データベースユーザー名 -h データベースホストアドレス -p
データベース接続用のユーザー名
mysql -u xxxxx_dbusrnm -h localhost -p
Enter

パスワード
キーボード操作でもカーソルは動かない。編集 > 貼り付け<CR>
 
Enter
データベースに接続成功すると黄色い文字でいろいろ出てくる

use データベース名
用意しておいた空のデータベース名
use wp_data
Enter

source インポートするsqlファイルのパス
source /home/coreserverコンパネID/domains/domain.com/public_html/wp_database.sql
Enter

終了
exit;
Enter

サーバー上でzipを解凍

あらかじめしておくこと

zipファイルをFTPで展開したいディレクトリにアップしておく

cd ディレクトリ名
zipのあるディレクトリへ移動
cd public_html/sample.com
unzip zipファイル名
その場で展開
unzip wordpress.zip

ディレクトリ移動

public_htmlに移動
cd public_html
上の階層に移動
cd ../
2023年2月2日

Sublime Text 4

Package

package をインストールのための初期設定

Ctrl + Shift + p
[Install Package Control] - Enter

package インストール方法

Ctrl + Shift + p
[Package Control: Install Package] - Enter
Search package name and hit enter

package アンインストール方法

[Package Control: Rmove Package] - Enter
Select package name and hit enter

インストールするpackage

All Autocomplete

他のファイルにあるクラス名を補完する

html5

同じファイル内のクラス名を補完する

Preferences > Settings

非表示にする拡張子

"file_exclude_patterns": ["*.jpg","*.png", ".DS_Store", "desktop.ini", "*.psd"],

ダブルクリックでファイルを新しいタブで開く

"preview_on_click": false,

どこまでスクロールすんねん問題

"scroll_past_end": false,

Definitionsのポップアップ非表示

"show_definitions": false,

htmlのauto complete をCtrl + spaceなしで有効にする

"auto_complete_selector": "source, text",

折り返し表示

"word_wrap": "true",

行間をすこし広げる

"line_padding_top": 2,
"line_padding_bottom": 2,

Preferences > Customize Color Scheme...

選択した文字にマッチした文字の枠線の色変更

"globals":
{
  "highlight": "var(white)",
}

javascript内のphp記述エラー背景色変更

"rules":
{
  "name": "Invalid",
  "scope": "invalid",
  "foreground": "var(white2)",
  "background": "var(blue3)"
}

Preferences -> Key Bindings

Sublime Text デフォルトショートカット Atom比較

Sublime Text Atom
行の移動 Ctrl + Shift + ↑/↓ Ctrl + ↑/↓
コメントアウト Ctrl + Ctrl + /

ショートカットキーの変更

Default(Winodws).sublime-keymap

Ctrl + Tabの順序を並び順にする

{ "keys": ["ctrl+tab"], "command": "next_view" },
{ "keys": ["ctrl+shift+tab"], "command": "prev_view" }

Ctrl + /(テンキー)でコメントアウト

{ "keys": ["ctrl+keypad_divide"], "command": "toggle_comment", "args": { "block": false } }

Ctrl + ↑/↓で行移動

{ "keys": ["ctrl+up"], "command": "swap_line_up" },
{ "keys": ["ctrl+down"], "command": "swap_line_down" },

View

ミニマップ非表示

View > Hide Minimap

サイドバーのgroupを非表示

View > Side Bar > Hide Open File

分割表示

View > Layout

File

同じファイルを複数タブで開く

タブを右クリック > Split View

File > Split View

同じファイルを分割表示させる場合はView > Layoutで開いたカラムへタブをドラッグ

使い方

サイドバーにフォルダ(プロジェクト)を追加

Project > Add Folder to Project...

良い点:ノーブレークスペースが見える

ほかのエディターでは見えないがsublimeでは16進コードで表示される
デフォルトで表示設定 draw_unicode_white_space
<0xa0>

使いづらいサジェスト

CSSのサジェスト補完に文字列(ABC)候補が上に来る
HTMLのサジェスト補完に文字列(ABC)候補が上に来る
phpファイル内のCSSで余計な候補が出る [color,padding]
div.test + Tab で<div class="test"></div>を出したいのにclass名によっては余計な候補がでてきてできない

Ultimate Settings

Preferences > Settings

{
	"file_exclude_patterns": ["*.jpg","*.png","*.mscz","*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", ".directory", "desktop.ini", "*.class", "*.psd", "*.db", "*.sublime-workspace"],
	"preview_on_click": false,
	"scroll_past_end": false,
	"show_definitions": false,
	"auto_complete_selector":"source, text",
	"tab_size": 2,
	"word_wrap": "true",
	"ignored_packages":
	[
		"Vintage",
	],
	"theme": "auto",
	"color_scheme": "Mariana.sublime-color-scheme",
	"font_size": 12,
	"line_padding_top": 2,
	"line_padding_bottom": 2,
}

Preferences > Customize Color Scheme...

// Documentation at https://www.sublimetext.com/docs/color_schemes.html
{
	"variables":
	{
		"black_atom": "hsl(222, 10%, 20%)",
		"orange4": "hsl(32, 60%, 61%)",
		"white4": "hsl(223, 12%, 75%)",
		"grey2": "hsl(220, 9%, 40%)",
        "red3": "hsl(355, 65%, 65%)",
        "red4": "hsl(5, 48%, 50%)",
	},
	"globals":
	{
		"background": "var(black_atom)",
		"highlight": "var(white)",
		"selection_border": "var(white2)",
	},
	"rules":
	[
        //数値色変更
        {
            "name": "Number",
            "scope": "constant.numeric",
            "foreground": "var(orange4)"
        },
        //CSSの単位の色変更
        {
            "name": "Number Suffix",
            "scope": "storage.type.numeric",
            "foreground": "var(orange4)",
            // "font_style": "italic"
        },
        //CSSのカラーコードの色変更
        {
            "name": "User-defined constant",
            "scope": "constant.character, constant.other",
            "foreground": "var(orange4)"
        },
        //CSSの値名の色変更
        {
            "name": "Library constant",
            "scope": "support.constant",
            "foreground": "var(orange4)",
            "font_style": "normal"
        },
        //CSSのプロパティー
        {
            "name": "CSS Properties",
            "scope": "support.type.property-name",
            "foreground": "var(white4)",
            "font_style": "normal"
        },
        //コメントアウト色
        {
            "name": "Comment",
            "scope": "comment, punctuation.definition.comment",
            "foreground": "var(grey2)",
            "font_style": "italic"
        },
        //js内のphp記述
      {
            "name": "Invalid",
            "scope": "invalid",
            "foreground": "var(white2)",
            "background": "var(black_atom)"
        },
        //php tag color
        {
            "name": "Punctuation",
            "scope": "punctuation.section",
            "foreground": "var(red4)"
        },
        //html tag color
        {
            "name": "Tag name",
            "scope": "entity.name.tag",
            "foreground": "var(red3)"
        },

	]
}

Preferences -> Key Bindings

[
	{ "keys": ["ctrl+tab"], "command": "next_view" },
	{ "keys": ["ctrl+shift+tab"], "command": "prev_view" },
	{ "keys": ["ctrl+keypad_divide"], "command": "toggle_comment", "args": { "block": false } },
	{ "keys": ["ctrl+up"], "command": "swap_line_up" },
	{ "keys": ["ctrl+down"], "command": "swap_line_down" },
]

1. hostsファイルを編集

C:\Windows\System32\drivers\etc\hosts

以下の3行を追加
# SublimeText
127.0.0.1 license.sublimehq.com # SublimeText
127.0.0.1 www.sublimetext.com # SublimeText
hostsファイルは直接編集保存できないので一旦デスクトップに移動してから編集

2. HxD でexeファイルを編集

HxD

(HxDを管理者として実行)
sublime_text.exe を開く (C:\Program Files\Sublime Text)
Search > Replace (Ctrl+R)
Hex-valuesタブ

x64

Search for: 4157415656575553B828210000
Replace with: 33C0FEC0C3575553B828210000
OK

Search for: 6C6963656E73652E7375626C696D6568712E636F6D
Replace with: 7375626C696D6568712E6C6F63616C686F73740000
OK

File > Save (Ctrl+S)

3. Sublime Textにライセンスを入力

Help > Enter Licence

---- BEGIN LICENSE ----
You
Unlimited User License
EA7E-81044230
0C0CD4A8 CAA317D9 CCABD1AC 434C984C
7E4A0B13 77893C3E DD0A5BA1 B2EB721C
4BAAB4C4 9B96437D 14EB743E 7DB55D9C
7CA26EE2 67C3B4EC 29B2C65A 88D90C59
CB6CCBA5 7DE6177B C02C2826 8C9A21B0
6AB1A5B6 20B09EA2 01C979BD 29670B19
92DC6D90 6E365849 4AB84739 5B4C3EA1
048CC1D0 9748ED54 CAC9D585 90CAD815
----- END LICENSE -----
2023年2月1日

VS code setting

setting

Commonly Used

折り返し

word wrap - on

非表示させる拡張子

files: Exclude - add **/*.jpg

Text Editor

ミニマップ非表示

Minimap - disable

カーソールオーバーでポップアップ無効化

Hover: enebled

スクロールが最終行を超えて余白ができないようにする

ScrollBeyondLastLine チェック外す

Workbench

ファイルを新しいタブで開く

Editor Management > Enable Preview チェックを外す

エディター起動時の初期ページ

Startup Editor - none

Extensions

php validateエラーがでないようにする

php.validate.enable チェックをはずす

css エラーwarningがでないようにする

Extensions > CSS > Empty Rules - ignore

cssの余計なサジェスト補完を無効にする

Extension > Emmet > Exclude language - add css

Color Theme

テーマの検索と追加方法

左メニューExtensions(Ctrl + Shift + X)の検索窓または
設定 > Color Theme - 検索窓直下の[「+ browse additional themee...」から検索
Atom風のテーマは 「Atom One Dark Theme by Mahmoud Ali」

File Icon Theme

左メニューExtensions(Ctrl + Shift + X)の検索窓または
検索窓したデフォルト3つの下の[Install Additional File Icon Themes...]から検索
一番シンプルなアイコンは[TextPad Icon Theme]

ショートカット

VS code デフォルトショートカット Atom比較

VS Code Atom
選択した行の複製* Alt + Shift + Ctrl + Shift + D
文字の置き換え Ctrl + H Ctrl + Shift + F
選択行の移動 Alt + ↑/↓ Ctrl + ↑/↓
先に進む Ctrl + Y Ctrl + Y
*変更済み

ショートカットの変更

設定 > Keyboard shortcuts

  • かぶってるショートカットを右クリック[Remove keybinding]で削除
  • 目的のショートカットに割当

Ctrl + Tab でタブ切り替え

View> command pallete >Preferences: Open Keyboard Shortcuts (JSON)

keybindings.json

[
    {
        "key": "ctrl+tab",
        "command": "workbench.action.nextEditor"
    },
    {
        "key": "ctrl+shift+tab",
        "command": "workbench.action.previousEditor"
    }
]
+の前後はスペースなし

Extensions

左メニューExtensions(Ctrl + Shift + X)の検索窓

HTML to CSS autocompletion

HTMLで使われてるCSSのclass名をCSSファイル内で補完

hightlight-selections-vscode

選択ハイライト (反応遅い)

Extension > highlight Selections: Border Color

  "highlightSelections.borderColor": "#eee"

Highlight Matching Tag

始まりタグ、閉じタグに下線をつける

Extension > Highlight Matching Tag config > style

"highlight-matching-tag.styles": { "opening": { "name": { "underline": "#608cf7" } } }

使いづらい点

htmlファイル内ではcssの補完サジェストが出るのにphpファイルの中でcssの補完サジェストがでない
html側で使ってるclass名のサジェスト出ない
2023年1月30日

grid-column / grid-row

grid-column: 1 / 4;

html

<div>
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
</div>

css

div{
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
div div:first-child{
  grid-column:1 / 4;
}
1 :first-child{grid-column:1 / 4;}
2
3
4
5
6
7

grid-row: 1 / 4;

div{
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
div div:first-child{
  grid-row:1 / 4;
}
1 :first-child{grid-row:1 / 4;}
2
3
4
5
6
7
2023年1月20日

add parameter on url jquery

すべてのリンクに同じパラメーターをつけるjQuery
$(function(){
  $("a").each(function() {
    var obj = $(this);
    var link = obj.attr("href");
    obj.attr("href",link+"?p=1")
  });
});

Before

<a href="https://fzfeed.blogspot.com/"></a>

After

<a href="https://fzfeed.blogspot.com/?p=1"></a>

すでにパラメーターがついてるURLには&でつなぐ
$(function(){
  $('a[href*="php?"]').each(function() {
    var obj = $(this);
    var link = obj.attr("href");
    obj.attr("href",link+"&p=1")
  });
  $('a:not([href*="php?"])').each(function() {
    var obj2 = $(this);
    var link2 = obj2.attr("href");
    obj2.attr("href",link2+"?p=1")
  });
});

画像のみをリロードさせる

ボタンを押したらページはリロードさせず、画像にパラメーターをつけて画像のみ再読み込みさせる
$(document).ready(function() {
    $("button").click(function() {
      $('.tokuteino img').each(function() {
        var obj = $(this);
        var imagen = obj.attr("src");
        var tiempo = Date.now();
        obj.attr("src",imagen + "?" + tiempo);
      });
      return false;//ボタンがaの場合はこれを追加
    });
});

Windows 11 設定

アカウント

ローカルアカウントでのサインイン

Windows11セットアップ時にMicrosoft アカウントを利用したためMicrosoft アカウントのログインをやめる

アカウント > ユーザー情報 > アカウントの設定

Users フォルダ名変更する

Microsoft アカウントメールアドレスの最初の5文字がフォルダ名になっているためフォルダ名変更する
  • 希望の名前で新規ローカルアカウントを作る
  • 希望の名前のローカルアカウントを管理者権限にする
  • 古いローカルアカウントを削除する

アカウント > 他のユーザー > アカウントの追加 > このユーザーのサインイン情報がありません > Microsoftアカウントを持たないユーザーを追加する

ここで「ユーザー名」に入力する文字がフォルダ名になる

「この名前はすでに使われています。別のユーザー名を入力してください」で希望の名前のローカルアカウントが作成できない場合

  • 適当な名前の新規ローカルアカウントを作る
  • その適当な名前のローカルアカウントを管理者権限にする
  • インストール時作成の古いローカルアカウントを削除する
すると希望の名前のローカルアカウントを作れるようになるので
  • 希望の名前のローカルアカウントを作る
  • その希望の名前のローカルアカウントを管理者権限にする
  • 適当な名前のローカルアカウントを削除する
※Windows11セットアップ時に利用したMicrosoft アカウントの登録名とかぶると「この名前はすでに使われています。別のユーザー名を入力してください」で別(希望の)のユーザー名でアカウントが作れなくなる。

ローカルアカウントでのパスワードなしでのサインイン

アカウント > サインインオプション > パスワード

空欄でOK

システム

「デバイスのセットアップを完了しましょう」の通知をオフにする

通知 > 追加の設定

「Windowsを最大限に活用し、デバイスの設定を完了する方法を提案」オフ
「Windows を使用する際のヒントと提案を入手する」オフ

アプリ

「プログラムから開く」の選択肢にフォトビューアーを入れる方法

.jpg .pngをフォトビューアーで開くようにする設定
Win + R

regedit

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations
適当な場所で右クリック>新規>文字列値
「新しい値 #1」を拡張子名にする
右クリック>修正 - 値のデータ

PhotoViewer.FileAssoc.Tiff

個人用設定

タスクバー

タスクバーの動作

タスクバーの配置:左寄せ
タスクバーのボタンをまとめラベルを非表示にする:なし

※Windows 10の「タスクバーを結合しない」機能が2023年秋の23H2バージョンのアップデートで復活した
※Explorer Patcherはクラッシュを起こすため厳禁
※「タスクバーのボタンをまとめ他のタスクバーでラベルを非表示にする」はディスプレイを2つ接続していると設定可能になる項目

時刻と言語

日本語と英数の入力切替ショートカットの設定

ショートカットを設定できる準備をする

時刻と言語 > 言語と地域 > 日本語 言語のオプション > キーボード Microsoft IIME キーボードオプション
または設定の検索窓に「日本語 IME設定」を検索
> 全般 > 相互性
「以前のバージョンのMicrosoft IMEを使う」をオンにする

ショートカットを設定する

タスクバーのIME([あ]または[A]の箇所)を右クリック > プロパティ > 詳細設定 > 編集操作 キー設定 変更

Google 日本語の場合は一般タブキー設定 編集

半角英数入力にする

入力/変換済み文字なし「IME オフ」、入力文字のみ「-」

※Google 日本語の場合はモード「入力文字なし」を「IMEを無効化」に編集またはエントリーを追加

日本語入力にする

入力/変換済み文字なし「IME オン」、入力文字のみ「-」

※Google 日本語の場合はモード「直接入力」「入力文字なし」として「IMEを有効化」に編集またはエントリーを追加

日本語入力と半角英数入力を切り替える

入力/変換済み文字なし「IME - オン/オフ」

※Google 日本語の場合はモード「直接入力」を「IMEを有効化」と編集
モード「入力文字なし」「変換前入力中」「変換中」として「IMEを無効化」エントリーを追加または編集する

Windows 変換キーデフォルト機能とカスタム設定

キー デフォルト機能 カスタム設定
無変換 日本語入力:あ ア ア
英数入力:N/A
日本語変換:てすと テスト テスト
英数変換:N/A
IME - オン/オフ
変換 決定後:変換のやり直し
日本語変換:SPACE変換と同じ
英数変換:test test TEST Test Test TEST
日本語入力(IME オン)
カタカナ 日本語入力
Shift + 無変換 英数サジェスト入力 日本語入力(IME オン)
Ctrl + 無変換 N/A 半角英数入力(IME オフ)
Shift + SPACE SPACE
Ctrl + SPACE SPACE N/A

Google 日本語の場合の設定

モード 入力キー コマンド
入力文字なし Ctrl + 無変換 IMEを無効化
直接入力 Shift + 無変換 IMEを有効化
入力文字なし Shift + 無変換 IMEを有効化
直接入力 無変換 IMEを有効化
入力文字なし 無変換 IMEを無効化
変換前入力中 無変換 IMEを無効化
変換中 無変換 IMEを無効化

アクセシビリティ

Shiftキーを5回連続で押しても固定キー機能のポップアップがでないようにする

固定キー機能「オフ」 > 固定キー機能用のショートカット「オフ」

PrintScreeでクリップボードにコピーになるようにする

キーボード > PrintScree キーを使用してSinipping Toolを開く「オフ」

スクリーンショットのショートカット

コピー範囲 入力キー 保存先
画面全体 Windows + PrintScreen C > ピクチャ > スクリーンショット
部分選択 Windows + Shift + S 「切り取り&スケッチ」を起動
firefox Ctrl + Shift + S ダウンロードするとブラウザ指定フォルダ

スクリーンレコードのショートカット

アクション 入力キー
「Xbox Game Bar」を起動 Windows + G
録画開始・停止 Windows + Alt + R
・いきなりWindows + Alt + Rで録画開始可
・アクティブウィンドウのみ録画
・ウィンドウ サイズを変えると停止する
・保存フォルダ C > ビデオ > Caputures (設定 > ゲーム > キャプチャで確認できる)
移動する場合はフォルダーを任意の場所に移動(切り取り貼り付け)

フォルダー

画像ファイルのアイコンをプレビュー版にする

フォルダーオプションの設定 > 「表示」タブ > 「詳細設定」欄の「常にアイコンを表示し、縮小版は表示しない」にチェックを外す

※画像ファイルをphoto veiewer で開く設定にしてもアイコンはプレビュー版にはならない

エクスプローラーのサイドバーCreative Cloud Filesを非表示にする

レジストリ エディター > Ctrl + F Creative Cloud Files > ダブルクリック「System.IsPinnedToNameSpaceTree」 > 値のデータを「0」にしてOK

svgをエクスプローラー内でプレビューする PowerToys

※Microsoft PowerToysは余計なショートカットキー(alt + space)が設定されるので使えない
※SVG Explorer Extensionというソフトでは完璧にすべてのsvgファイルがプレビューされない

phpファイルのプレビューをOFFにする

File Explore add-ons > ソースコードファイル - OFF

タスクマネージャー

スタートアップ

不要なものを無効化

その他

OneDriveをアンイストール
2023年1月3日

Windows10 ネットワークでパブリックフォルダー経由のファイル共有方法

コントロールパネルから

ネットワークとインターネット > ネットワークと共有センター > 共有の詳細設定

受け取る側のPC

  • ネットワーク検索を有効にする

送る側のPC

すべてのネットワーク
  • パブリックフォルダーの共有を有効にする
  • パスワード保護を無効にする
受け取る側PCから送る側のPCの以下へアクセスできるようになる

C > ユーザー > パブリック

2022年9月29日

属性セレクター CSS

何番目系

:nth-child()(兄弟、別タグもカウントされる ※class指定は不可)

3番目
p:nth-child(3)
3の倍数目
p:nth-child(3n)
4つ目からスタートして3の倍数目
p:nth-child(3n+4)
最初の2こ
p:nth-child(-n+2)
2番目以降すべて
p:nth-child(n+2)
最後から2番目のp
p:nth-last-child(2)

:nth-of-type()(兄弟、同タグのみカウント ※class指定は不可)

pだけカウントして3番目のp
p:nth-of-type(3)
要素内最後のp。
p:last-of-type

親子兄弟隣接

~ (以降の兄弟)

h1以降の兄弟p
h1~p
li.activeより前の兄弟li全て(特定の要素前全て、自分含む)
li:not(li.active~li)
li.activeより前の兄弟li全て(特定の要素前全て、自分含まない)
li:not(li.active~li):not(li.active)

:has()(子、下の兄弟の要素を判定)

imgを子にもつa(imgを囲ってるa)
a:has(img)
a.activeを直後にもつa(a.active要素の直前のa)
.pager a:has(+ .active)

まとめる系

:is()

以下は同じ
header a,footer a
:is(header,footer) a

:where()

以下は同じ
header a,footer a
:where(header,footer) a
header,footerの部分は優先度の効力はないため優先度的には以下と同じ
a

RegEx系

title属性があるもの
a[title]{
   color:red;
}
hrefリンク先URLにurbanを含むもの
a[href*="urban"]{
   color:red;
}
hrefが.comで終わるもの
a[href$=".com"]{
   color:red;
}
hrefがhttpで始まるもの
a[href^="http"]{
   color:red;
}
urbanというclassがあるもの(複数クラスを指定している場合で語の完全一致させたいときに使う)class="urban dic"
a[class~="urban"]{
   color:red;
}

リンク先URLが特定のaタグにだけcssを追加する方法

「urban」を含むリンク先のものだけにclass modal を追加する
$(document).ready(function() {
   $('a[href*="urban"]').addClass('modal');
});
2022年6月7日

ループ内で連想配列を作る make associative array in the loop

ループ内でオリジナルの情報を連想配列に格納する
$id_date_array = array();
if ( have_posts() ): while ( have_posts() ) : the_post(); 
  $id_date_array[] = array(
        'id' => $get_the_ID(),
        'date' => $date,
  );
endwhile;endif;
var_dump($id_date_array);の結果

array(2) {
 [0]=> array(2) {
  ["id"]=> int(399)
  ["date"]=> string(8) "20220804"
 }
 [1]=> array(2) {
  ["id"]=> int(64)
  ["date"]=> string(8) "20220714"
 }date
}

2022年3月12日

Blogger カスタムマニュアル

ページ判定条件文

bloggerの条件分岐分には「blog型」と「view型」の2種類があり、ほぼ同じように機能する。

blog型ホームの条件文はプレビューと共通

下書きプレビュー時に自分のURLが/blog-post.htmlになってるとここを通る。タイトルを日本語にした場合起きる現象。
<b:if cond='data:blog.url == data:blog.homepageUrl'>
	//URLの状態によってプレビューもここを通る
</b:if>
<b:if cond='data:post.link or (data:post.url and data:blog.url != data:post.url)'>
	//記事タイトル
	//URLの状態によってプレビューもここを通る
</b:if>
この条件が特にタイトル部分(class='post-title entry-title')にデフォルトテンプレートで使われてるためプレビュー条件を入れて公開状態と同じにする必要がある。

ホームだけを通したい場合の対策

view型のホーム分岐を使う。

blog型、view型の条件文

blog型 view型 ページ種類
<b:if cond='data:blog.pageType == "index"'> ホーム || ラベル || 月別
<b:if cond='data:blog.url == data:blog.homepageUrl'> - ホーム || プレビュー
- <b:if cond='data:view.isHomepage'> ホーム
<b:if cond='data:blog.pageType == "item"'> <b:if cond='data:view.isPost'> 投稿
<b:if cond='data:blog.pageType == "static_page"'> <b:if cond='data:view.isPage'> ページ
<b:if cond='data:blog.url == data:post.url'> <b:if cond='data:view.isSingleItem'> 投稿 || ページ
<b:if cond='data:blog.searchLabel'> <b:if cond='data:view.isLabelSearch'> ラベル
<b:if cond='data:blog.searchLabel == "ラベル名"'> <b:if cond='data:view.isLabelSearch == "ラベル名"'> 特定のラベル
- <b:if cond='data:view.isPreview'> プレビュー
※elseifは効かないためelseの中に入れ子にする

[【Blogger】ifを使って要素を判別するテンプレートタグまとめ ]
[ bloggerで表示しているページを判断する方法 ]

ページ別に<body> class名をつける

pageType ページ種類
index ホーム/ラベル/月別
item 投稿
static_page ページ

ホームだけのclassをつける

<body expr:class='"loading" + data:blog.mobileClass + data:blog.pageType + (data:blog.url==data:blog.homepageUrl ? " home" : "")'>

ホームでの出力

body class="index home"

※公開中の投稿プレビューにもhomeがつく
※ページを読み込み後時間差で効く。そのためこれを利用してcssを書くとたとえ color であってもPageSpeed InsightsのCumulative Layout Shift評価が下がり、その結果良好 URLの数が激減する。
参考: Bloggerのページタイプ別にスタイルを適用したい

<title>

<title>
   <b:if cond='data:blog.searchLabel'>
      <data:blog.pageName/>
   <b:else/>
      <b:if cond='data:blog.pageType == "item"'>
         <data:blog.pageName/>
      <b:else/>
         <data:blog.pageTitle/>
      </b:if>
   </b:if>
</title>
ラベルページ:ラベル名のみ
投稿ページ:投稿タイトルのみ
それ以外:ブログ名:ページ名(homeのときはブログ名のみ)

ホームで投稿タイトルのみ表示

ラベルページやホーム、特定のページ投稿で本文を表示させない場合は条件分岐で出し分ける。

タイトルから本文、ラベルなど投稿内容すべてを出力してるコード

<b:include data="post" name="post"/>
検索するとテーマHTML内に一箇所だけある。

リンクつきのタイトルのコード

<a expr:href='data:post.url'><data:post.title/></a>

サムネイル画像featuredImageをimgタグで出力

画像の横幅と縦横の比率を指定
<b:with value='data:post.featuredImage.isResizable?resizeImage(data:post.featuredImage, 512, "3:2"): data:post.thumbnail' var='image'>
   <img class='featuredImage' expr:alt='data:post.title' expr:src='data:image' layout='responsive' />
</b:with>
デフォルトではalt属性が「イメージ」固定のためimgタグ出力に置き換える

<meta description>

投稿タイトル名を含めたディスクリプションを自動で設定する方法。
<meta expr:content='data:blog.pageName + "のページです"' name='description'/>

投稿ページでのソース上の出力(投稿タイトル「英語」の場合)

<meta content='英語のページです' name='description'/>

ウィジェットエリアを追加する

表示したい場所に置くコード
<b:section id='任意の名前'/></b:section>

投稿に使われてるラベルを表示する

<span class='post-labels'>
  <b:if cond='data:post.labels'>
    <b:loop values='data:post.labels' var='label'>
      <a expr:href='data:label.url + "?home=1"' rel='tag'><data:label.name/></a><b:if cond='not data:label.isLast'> </b:if>
    </b:loop>
  </b:if>
</span> 

ラベルページでそのラベル名を表示

<data:blog.pageName/>

Essentialカスタムマニュアル

シンプルなbloggerテーマEssentialをもとにカスタムするためのミニマル化。

ヘッダースクリプト無効化

</body>直前のscriptをコメントアウト
2022年2月15日

Internet Explorer 6 デフォルトCSSを再現するための css

2000年代初期のブラウザIEのデフォルトCSS設定を再現するためのCSS

font-family

body{
   font-family:MS PGothic,sans-serif;
   font-family:MS Serif,serif;
}
Microsoft sans serif MS PGothic
Microsoft Serif MS Serif

::select

*::selection{
   background: rgba(7,32,107,.99);
   color:#fff;
}
Select me. I take you back to early 2000.

divでtableの枠を再現する

.table-box{
   border-top:1px solid #d3ccc9;border-left:1px solid #d3ccc9;
   border-bottom:1px solid #808380;border-right:1px solid #808380;
   position:relative;
   padding:10px;
   z-index:0;
   background:transparent;
}
.table-box:before{
   content:'';
   display:block;
   border-top:1px solid #808380;border-left:1px solid #808380;
   border-bottom:1px solid #d3ccc9;border-right:1px solid #d3ccc9;
   width:calc(100% - 6px);
   height:calc(100% - 6px);
   position:absolute;
   top:2px;
   left:2px;
   z-index:-1;
}
Internet Explorer 6 ' table looking div
2021年12月20日

Make Windows 10 start menu look like 98 / Classic Shell settings

Windows 10/11をWindows 98 風のスタートメニューにカスタムする設定

Open Shell または Classic Shell(旧) のインストールとskinの準備

Classic Shell(旧バージョン) Open Shell

Skinをダウンロード

Win98Plus! Retro skin [Classic Style] CSM 4.3.0からWin98Plus skinをダウンロード。
解凍したらWin98Plus! Retro.skinをSkinフォルダーに置く

C:\Program Files\Classic Shell\Skins

Win98Plus skin, taskbar, picture.zip

画像の準備

スタートボタン

アイコン

win98icons icoconvert

Open Shell / Classic Shell の設定

Start Menu Style

Replace Start button:Custom

Skin

skin:Win98Plus! Retro

Skin Vriation: Windows default
Caption: System caption

Taskbar

Taskbar color: BFBFBF
Taskbar text color: 000000

Windowsの設定

スタートメニューに表示したいソフトは以下のフォルダにショートカットをいれる

C:\Users\<USER NAME>\AppData\Roaming\Microsoft\Windows\Start Menu

ショートカット

OSデフォルトのメニューを開く

Shift + Win

スタートアップサウンド変更

任意のwavファイルを設定できる
Startup Sound Changer
2021年9月15日

autopager.js install manually

html

<div class="content">
	loop
</div>
<a rel="next" href="next page url here">VIEW MORE</a>

autopager.js

(function($) {
	var window = this, options = {},
		content, currentUrl, nextUrl,
		active = false,
		defaults = {
			autoLoad: true,
			page: 1,
			content: '.content',
			link: 'a[rel=next]',
			insertBefore: null,
			appendTo: null,
			start: function() {},
			load: function() {},
			disabled: false
		};

	$.autopager = function(_options) {
		var autopager = this.autopager;

		if (typeof _options === 'string' && $.isFunction(autopager[_options])) {
			var args = Array.prototype.slice.call(arguments, 1),
				value = autopager[_options].apply(autopager, args);

			return value === autopager || value === undefined ? this : value;
		}

		_options = $.extend({}, defaults, _options);
		autopager.option(_options);

		content = $(_options.content).filter(':last');
		if (content.length) {
			if (!_options.insertBefore && !_options.appendTo) {
				var insertBefore = content.next();
				if (insertBefore.length) {
					set('insertBefore', insertBefore);
				} else {
					set('appendTo', content.parent());
				}
			}
		}

		setUrl();

		return this;
	};

	$.extend($.autopager, {
		option: function(key, value) {
			var _options = key;

			if (typeof key === "string") {
				if (value === undefined) {
					return options[key];
				}
				_options = {};
				_options[key] = value;
			}

			$.each(_options, function(key, value) {
				set(key, value);
			});
			return this;
		},

		enable: function() {
			set('disabled', false);
			return this;
		},

		disable: function() {
			set('disabled', true);
			return this;
		},

		destroy: function() {
			this.autoLoad(false);
			options = {};
			content = currentUrl = nextUrl = undefined;
			return this;
		},

		autoLoad: function(value) {
			return this.option('autoLoad', value);
		},

		load: function() {
			if (active || !nextUrl || options.disabled) {
				return;
			}

			active = true;
			options.start(currentHash(), nextHash());
			$.get(nextUrl, insertContent);
			return this;
		}

	});

	function set(key, value) {
		switch (key) {
			case 'autoLoad':
				if (value && !options.autoLoad) {
					$(window).scroll(loadOnScroll);
				} else if (!value && options.autoLoad) {
					$(window).unbind('scroll', loadOnScroll);
				}
				break;
			case 'insertBefore':
				if (value) {
					options.appendTo = null;
				}
				break
			case 'appendTo':
				if (value) {
					options.insertBefore = null;
				}
				break
		}
		options[key] = value;
	}

	function setUrl(context) {
		currentUrl = nextUrl || window.location.href;
		nextUrl = $(options.link, context).attr('href');
	}

	function loadOnScroll() {
		if (content.offset().top + content.height() < $(document).scrollTop() + $(window).height()) {
			$.autopager.load();
		}
	}

	function insertContent(res) {
		var _options = options,
			nextPage = $('<div/>').append(res.replace(/<script(.|\s)*?\/script>/g, "")),
			nextContent = nextPage.find(_options.content);

		set('page', _options.page + 1);
		setUrl(nextPage);
		if (nextContent.length) {
			if (_options.insertBefore) {
				nextContent.insertBefore(_options.insertBefore);
			} else {
				nextContent.appendTo(_options.appendTo);
			}
			_options.load.call(nextContent.get(), currentHash(), nextHash());
			content = nextContent.filter(':last');
		}
		active = false;
	}

	function currentHash() {
		return {
			page: options.page,
			url: currentUrl
		};
	}

	function nextHash() {
		return {
			page: options.page + 1,
			url: nextUrl
		};
	}
})(jQuery);

setting javascript

$(function() {
  $.autopager({
    autoLoad: true
  });
  $('a[rel=next]').click(function() {
    $.autopager('load');
    return false;
  });
});
2021年9月3日

Advanced Custom Fieldsチェックボックスの値でquery posts投稿取得ができないときは

Advanced Custom Fieldsのチェックボックスの値を数字にしていてquery posts投稿取得の絞り込みできないとき

ACF選択肢の設定

チェックボックスで複数選択可能な選択肢を作成

1 : boho
2 : hippie
3 : gypsy

悪い例

category_IDの数字と選択された値(数字)を完全一致させた投稿を取得したいができない例
$args = array(
   'posts_per_page' => -1,
   'meta_key' => 'bohemian_cat',
   'meta_value' => $category_ID,
   //'meta_compare' => '=',//デフォルト
);
query_posts( $args );

絞れない原因

複数選択された情報はシリアライズされた形式で{s:値のバイト数:"値";}のようにmeta_valueとして保存される。echoしてみると
echo post_custom('bohemian_cat');

a:2:{i:0;s:1:"2";i:1;s:1:"3";}

'meta_compare' => 'LIKE',だけでは対策にならない

シリアライズされた形式内にバイト数の数字が入るためバイト数の数字と一致してしまう可能性があるため

良い例

シリアライズされた形で保存形式ないの「:"値";」をターゲットにし部分一致検索
$args = array(
   'posts_per_page' => -1,
   'meta_key' => 'bohemian_cat',
   'meta_value' => ':"' . $category_ID . '";';
   'meta_compare' => 'LIKE',
);
query_posts( $args );

参考サイト

2021年3月17日

make an array with looping content

ループしてるものを配列にする

投稿内にある複数のカテゴリーIDを配列にする

single.php

$categoryarry = array();//初期化
$categories = get_the_category();
foreach ( $categories as $category ) {
	$categoryarry[] .= $category->term_id;
}
var_dump($categoryarry);

配列にある同じ値(もの)数える

$countvalue = array_count_values($categoryarry);
echo $countvalue['値'];
2021年2月20日

How to get id, name and slug on wordpress

on page

page.php

Get category slug by ID
$category = get_category( $category_ID );
echo $category->slug;
Get category name by ID
$category = get_category( $category_ID );
echo $category->name;
Get category ID by slug
$idObj = get_category_by_slug( $cateslug );
$categoryID = $idObj->term_id;
Get tag name by ID
echo get_term_by('id' ,ここにタグID,  'post_tag')->name;
Get tag name by slug
$tag = get_term_by('slug', ここにタグスラッグ, 'post_tag');
echo $tag->name;

on category

category.php

Get category ID
$getcategory = get_category( get_query_var( 'cat' ) );
$cateid = $getcategory->cat_ID;
Get parent category ID
$cateid = get_query_var( 'cat' );//現在のカテゴリID
$child = get_category($cateid);
$parentID = $child->parent;//親カテゴリのID
Get category name
echo get_queried_object()->name;
single_cat_title('' , true );

on tag

tag.php

Get tag id
$tag_id = get_query_var('tag_id');

Anywhere

Get post id by url
$postid = url_to_postid( $url );
2021年1月31日

Tumblr テーマのカスタマイズコード補足説明

カスタマイズしやすい比較的シンプルなTumblr無料テーマ:Observer
不要なコードを判別して削除&カスタムHTMLテーマを作成するための変数: Tumblr THMLテーマ作成

マニュアルに説明されていないことを以下に補足

投稿タイプの分岐

画像投稿(画像ひとつ)
{block:Photo}{/block:Photo}
画像投稿(画像複数)
{block:Photoset}{block:Photos}{/lock:Photos}{/lock:Photoset}
カスタムページ、質問ページ(/ask)はテキスト投稿を通る
{block:Text} {/block:Text}
※カスタムページ、質問ページを判定することはできない

画像投稿

キャプション内容を<p>で囲んで出力
{Caption}
キャプション内容を<p> <br> キャンセルして出力
{PhotoAlt}
こちらも投稿タイトル(キャプション)のHTMLをキャンセルして出力
質問ページでは「質問ページのタイトル」で設定したテキストを出力
{block:PostSummary}{PostSummary}{/block:PostSummary}
複数画像をiframeで出力
{Photoset}

テーマオプション

0,1選択(ON,OFF)

設定
<meta name="if:Photoset Layout" content="0">
分岐
{block:IfPhotosetLayout}1で通る{/block:IfPhotosetLayout}
{block:IfNotPhotosetLayout}0で通る{/block:IfNotPhotosetLayout}

文字列表示

設定
<meta name="text:Body Font" content=""/>
分岐
{block:IfBodyFont}{text:Body Font},{/block:IfBodyFont}

tumblrテーマページの条件分岐 Wordpress対比

Tumblr Wordpress
{block:IndexPage}{/block:IndexPage} is_home() || is_date() || is_tag() || is_search()
{block:HomePage}
{/block:HomePage}
is_home()
{block:TagPage}
{/block:TagPage}
is_tag()
{block:PermalinkPage}
{/block:PermalinkPage}
is_single()
※カスタムページ、質問ページを判定することはできない。
2021年1月26日

プラグイン不要、投稿の属性「順序」で投稿の表示順を変える方法

順序に入力した数字順に投稿を表示させる方法

function.php

//管理画面の記事一覧に順序を表示
function add_posts_columns($columns) {
    $columns['menu_order'] = '順序';
    return $columns;
}
function add_posts_columns_row($column_name, $post_id) {
    if ( 'menu_order' == $column_name ) {
      $menu_order = get_post($post_id) -> menu_order;
      echo $menu_order;
    }
}
add_filter( 'manage_posts_columns', 'add_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_posts_columns_row', 10, 2 );
投稿以外で順序を使う場合はピンクを指定のpost_typeにする(管理画面URLから判断)
//投稿編集画面で「投稿の属性」の中に「順序」を表示させる
add_post_type_support( 'post', 'page-attributes' );
//管理画面の記事一覧「順序」でソートできるようにする
function make_order_column_sortable( $columns ) {
  $columns['menu_order'] = 'menu_order';
  return $columns;
}
add_filter( 'manage_edit-psot_sortable_columns', 'make_order_column_sortable' );
//カテゴリページだけ投稿を「順序」の順で表示
function cate_change_sort_order( $query ) {
  if ( is_admin() || ! $query->is_main_query() ) {
    return;
  }
  if($query->is_category('news') || $query->is_category('feature') ){
     //特定のカテゴリページでは管理設定通り(新しい順)
  }else if ( $query->is_category() ) {
   $query->set( 'order', 'ASC' );
    $query->set( 'orderby', 'menu_order' );
  }
}
add_action( 'pre_get_posts', 'cate_change_sort_order' );

wp_get_navを独自HTMLで出力してナビゲーションメニューをカスタマイズ

ナビゲーションメニューのIDに基づいて指定のナビゲーションメニューを取得

php

$menu_items = wp_get_nav_menu_items(21);//ナビゲーションメニューのID
foreach ( (array) $menu_items_news as $key => $menu_item ) {
   $title = $menu_item->title;
   $url = $menu_item->url;
   echo '<li><a href="' . $url . '">' . $title . '</a></li>';
}
参考:関数リファレンス/wp get nav menu items

正規表現でURL置換

URLのドメイン以下の文字列のみを取得(カテゴリーページで)

前:https://domain.com/news/

$wourl = str_replace("https://domain.com/","",$url);
$cate_slug = str_replace("/","",$wourl);

後:news

2021年1月15日

Wordpress 子・孫カテゴリIDを取得

親子間の子カテゴリ取得
$categories = get_the_category();
foreach ( $categories as $category ) {
  if($category->parent){
    $catename = $category->name;
    $childcateid = $category->cat_ID;
  }
}
親子孫間での特定の子カテゴリ取得
$cat = get_the_category();
foreach ( $cat as $category ) {
    $parent = $category->parent;
    if( $parent == ここにID ){
        $catename = $category->name;
        $childcateid = $category->cat_ID;// これもID
        $childcateid = $category->term_id;// これもID
    }
}
2020年12月19日

ループで作った複数投稿ID配列を使って複数投稿をquery_postsで取得する

PHP

//IDをループ
foreach($cats_list as $item){
  $ids[] = $item['post_id'];
}

$args = array(
  'posts_per_page' => -1,
  'post__in' => $ids
);
query_posts($args);

手書きで配列を作る場合

$args = array(
  'posts_per_page' => -1,
  'post__in' => array(101,102,103),
  'orderby' => 'post_in'//配列がはいってる順に表示
);
query_posts($args);
参考:How to make WP_Query 'post__in' accept an array?
2020年12月17日

カスタムフィールドを絞り込みの条件に入れる query_posts

PHP

$args = array(
    'cat' => 1937,
    'posts_per_page' => 4,
    'meta_key' => 'カスタムフィールド名前',
    'meta_value' => 'カスタムフィールドの値',
    'meta_compare' => 'NOT EXISTS',//存在しない場合
);
query_posts( $args );
※Advanced Custom Fieldsでもこのやり方でOK

複数のカスタムフィールドを条件に入れる 'OR' 編

この書き方は2つのカスタムフィールドを条件を「または」でつないだ状態
$args = array(
    'cat' => 1937,
    'posts_per_page' => 4,
    'meta_query' => array(
        array(
        'key' => 'カスタムフィールド名前',
        'value' => 'カスタムフィールドの値',
        'compare' => '=',//イコールだったらがデフォルト値
        )
    ),
    'meta_query' => array(
        array(
        'key' => 'カスタムフィールド名前',
        'value' => 'カスタムフィールドの値',
        'compare' => '=',//イコールだったらがデフォルト値
        )
    ),
);
query_posts( $args );

複数のカスタムフィールドを条件に入れる 'AND' 編

この書き方は2つのカスタムフィールドを条件を「かつ」でつないだ状態
$args = array(
    'cat' => 1937,
    'posts_per_page' => 4,
    'meta_query' => array(
        array(
        'key' => 'カスタムフィールド名前',
        'value' => 'カスタムフィールドの値',
        'compare' => '=',//イコールだったらがデフォルト値
        ),
        array(
        'key' => 'カスタムフィールド名前',
        'value' => 'カスタムフィールドの値',
        'compare' => '=',//イコールだったらがデフォルト値
        ),
    ),
);
query_posts( $args );

compare の中にいれられるもの例

= 等しい
!= 等しくない
LIKE 正規表現比較を使用したパターンマッチング
IN 複数の条件一致 どれかに等しいかどうか
空じゃない場合はvalueを''で空にして、!=。

カスタムメニューのループ

カスタムメニューをオリジナルHTMLでループさせたい場合

PHP

// カスタムメニューの指定
$menu_items = wp_get_nav_menu_items('メニュー名');

foreach ($menu_items as $menu):

  //追加した投稿などのID
  $page_id = $menu->object_id;

  //ナビゲーションライベル
  $navlabel = $menu->title;

   $thumbnail_id = get_post_thumbnail_id($page_id);
   $image_attributes = wp_get_attachment_image_src($thumbnail_id,'medium');
   $image_attributes[0];  //アイキャッチ画像URL

  //追加した投稿などのオリジナルタイトル
  $content = get_page($page_id);
  $content->post_title;
  
endforeach;
※なぜかアイキャッチは投稿ID($page_id )から直接取得しようとするとこの投稿じたいのアイキャッチしか取得できない。 なのでアイキャッチIDから取得
2020年10月7日

ハンバーガーメニューコピペ用ソース

HTML

<!-- ハンバーガーメニュー -->
<div class="hamburger">
   <span class="hamburger-line hamburger-line-1"></span>
   <span class="hamburger-line hamburger-line-2"></span>
   <span class="hamburger-line hamburger-line-3"></span>
</div>

<!-- メニューコンテンツ -->
<div class="header-nav-sp" style="display:;">
</div>

jQuery

開閉状態の判定
$(document).ready(function() {
  $(".hamburger").click(function(){
    $("body").toggleClass('nav-open');
  });
});

CSS

ハンバーガーメニュー部分
.hamburger {
    position: absolute;
    right: 15px;
    top: 5px;
    width: 50px;
    height: 50px;
    z-index: 300;
}
.hamburger-line {
    position: absolute;
    left: 0;
    width: 25px;
    height: 2px;
    background-color: #111;
    transition: all .6s;
}
.hamburger-line-1 {
    top: 26px;
}
.hamburger-line-2 {
    top: 34px;
}
.hamburger-line-3 {
    top: 42px;
}
.nav-open .hamburger-line-1 {
   transform: rotate(45deg);
   top: 30px;
}
.nav-open .hamburger-line-2 {
    width: 0;
    left: 50%;
}
.nav-open .hamburger-line-3 {
    transform: rotate(-45deg);
    top: 30px;
}
メニューコンテンツ部分
.header-nav-sp {
  position: fixed;
  right: -200px;/*右から*/
  top: 0;
  bottom: 0;
  width: 200px;
  padding-top: 40px;
  background-color: #fff;
  transition: all .6s;
  z-index: 200;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.nav-open .header-nav-sp{
  right: 0;/*右から*/
  padding-top: 40px;
}

開いたときに背景を暗くする

HTML

<div class="menu-status"></div>

CSS 方法1

.menu-status {
    background: rgba(0,0,0,0);
    transition: all 0.3s ease-in-out 0s;
}
.nav-open .menu-status {
    background: rgba(0,0,0,.7);
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: 5;
}

CSS 方法2

.menu-status {
  position: fixed;
  left: 0;
  top: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  height: -webkit-fill-available;
  z-index: 11;
  background-color: #000;
  opacity: 0;
  visibility: hidden;
  transition: all .5s;
}
.nav-open .menu-status {
  opacity: .8;
  visibility: visible;
}

jQuery

$(document).ready(function() {
  $(".menu-status").click(function(){
    $("body").toggleClass('nav-open');
  });
});
2020年7月17日

Wordpress 親カテゴリのIDを取得

category.php

$cateid = get_query_var('cat');//現在のカテゴリID
$child = get_category($cateid);
$parentID = $child->parent; //これも親ID
$parentID = $child->category_parent;//これでも親ID

single.php

$categories = get_the_category();
foreach ( $categories as $category ) {
   $cat_id = $category->cat_ID;
   $child = get_category($cat_id);
   $parentID = $child->parent;
}

親カテゴリの名前を取得

single.php

$categories = get_the_category();
foreach ( $categories as $category ) {
   $cat_name = $category->name;
   $catenameParent = $cat_name;
}
2020年7月16日

wordpress/php さまざまなエラーと対処

php

getimagesize で429 エラー

getimagesizeで429 Too Many Requests エラーが出るときの対処

悪い例

httpから指定する

$imagesize = getimagesize('https://domain.com/images/sample.jpg');

良い例

サーバーのルートから指定する
$imagesize = getimagesize('var/www/domain.com/public_html/images/sample.png');

URL文字列をサーバールートからパス置き換える

$eyecatchimgには画像URL
$root_path = $_SERVER['DOCUMENT_ROOT'];
$pattern = '/https:\/\/domain.com/';
$root_img = preg_replace($pattern , $root_path , $eyecatchimg);

$imagesize = getimagesize($root_img);

wordpress

記事内の画像をアイキャッチとして使うコード【エラー対策済み】

ネットに出回るコードをそのまま使うと出るエラーメッセージ

Notice: Undefined offset: 0 in [URL]functions.php on line

functions.php

function catch_that_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    if (preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches)){
        $first_img = $matches [1] [0];
    }else{
        $first_img = get_stylesheet_directory_uri().'/images/noimage.jpg';
    }
return $first_img;
}
参考:https://lib.ridesign.jp/php/undefined-offset-0/

Wordpressの外でデータを読み込むとnetwork statusが404になる

404がでる悪い例

require_once ('../wp-blog-header.php');

良い例

require_once ('../wp-load.php');
2020年7月7日

カテゴリー指定、タグ指定、又は指定で投稿取得

How to get posts by category 'OR' by tag
特定のカテゴリーまたは特定のタグに属する投稿一覧を作る方法。 ANDではなくOR。

tax_queryを使う

get_postsでcategoryとtagを指定すると指定した両方に属する記事しか取得できない。 tax_queryでカテゴリー、タグをそれぞれ別々に指定しrelationをorにする。

query_posts() での指定の仕方

query_posts( array(
  'tax_query' => array(
     array(
        'taxonomy'=>'category',
        'terms'=>array( 'news','column', 'feature' ),
        'field'=>'slug',
        'include_children'=>true,
        'operator'=>'IN'
        ),
     array(
        'taxonomy'=>'post_tag',
        'terms'=>array( 'season' ),
        'field'=>'slug',
        'operator'=>'IN'
        ),
     'relation' => 'OR'
   ),
   'posts_per_page' => 36
  )
);

query_posts() 基本的な使い方

// クエリ(メインクエリを改変)
query_posts( $args );

// ループ(改変したメインクエリ)
if ( have_posts() ) : 
    while ( have_posts() ) : the_post();
        the_title();
    endwhile; 
else:
    // 何も取得されなかった
endif;

// クエリをリセット
wp_reset_query();

ヒントになったページ

https://elearn.jp/wpman/column/c20110908_01.html
https://www.warna.info/archives/287/
2020年7月6日

jQueryで画面幅判定しCSSを追加

画面幅の違いでbodyにそれぞれ違うクラスを追加
<script>
 $(function() {
  var w = $(window).width();
  var x = 720;// ブレイクポイント
  if (w <= x) {
   $('body').addClass('jssp');
  }else{
   $('body').addClass('jspc');
  }
 });
</script>
2020年5月17日

css 編集時のブラウザキャッシュ対策

CSSファイルが更新されたらユーザーに新たなCSSを読み込ませるブラウザキャッシュ対策 (WPでドメイン直下のCSSを読み込んでる場合もこれ)
<?php date_default_timezone_set('Asia/Tokyo'); ?>
<link href="style.css?<?php echo date( "Y-m-d-H-i-s", filemtime('./style.css')); ?>" rel="stylesheet"  type="text/css" />

ルートから指定する場合

<?php $path = $_SERVER['DOCUMENT_ROOT']; ?>
<link href="/style.css?<?php echo date( "Y-m-d-H-i-s", filemtime($path.'/style.css')); ?>" rel="stylesheet"  type="text/css" />

Wordpressの場合

function.php

functionからテーマcssを出力する場合
function theme_enqueue_styles() {
   wp_enqueue_style( 'style', get_stylesheet_directory_uri() . '/style.css', array(), date("Y-m-d-H-i-s", filemtime( get_stylesheet_directory().'/style.css')) );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

header.php

headerに直接書く場合
<link href="<?php echo get_template_directory_uri().'/style.css?'; echo date( "Y-m-d-H-i-s", filemtime(get_template_directory().'/style.css')); ?>" rel="stylesheet">
2020年4月21日

Windowsユーザー向けマックでWindowsキーボードを使うための設定

マックにつないだWindowsキーボードでWindowsのようにショートカットキーを使うためのマックキー割当設定。快適度7割アップ

修飾キーの変更(アプリなしで設定する場合)

システム環境設定 > キーボード > 修飾キー

Caps Lock : ⌃ Control
Control : ⌘ Command
Option(alt) : ⌥ Option
Command(Windows) : ⌃ Control

修飾キーの変更(Karabiner-Elementsで設定する場合)

Windowsのキーボードをマックで使う設定 Windowsキーボードにキーの割当てるためのアプリKarabiner-Elementsをインストール
Karabiner-Elements

Simple Modifications

Caps Lock : left_control
left_command(Windows) : left_control
left_control(Ctrl): left_command
left_option(Alt): left_option

illustrator CC 次のウィンドウ移動のためのショートカット(⌘ Command + F6)を実用的にするためF6無変換に割り当てる

PCキーボードの無変換キー: F6

システム終了(⌃ Control(Windows) + )のショートカットを有効にするためを右上のキーPause/Breakに割り当てる

pause: eject

fn キーを右のAlt に割り当てる

Right option : fn

Karabiner-Elementsで半角/全角キーを有効にする設定

Complex Modifications

+Add rules > Import more rules from the internet(open the browser) > ページの最下部のother examples > input_source_if,input_source_unless example をインポート

「Toggle input sources (English or Japanese) by grave_accent_and_tilde」を+Enableにする

※重要
  • Karabiner-Elementsを有効にする場合はシステム環境設定 > キーボード > 修飾キーをデフォルトに戻すこと
  • システム環境 > キーボード > 入力ソースに日本語が設定されていること
  • Simple Modificationsのタブでgrave_accent_and_tildeを設定しないこと
パソコンを再起動

Macのショートカット変更

システム環境設定 > キーボード > ショートカット

デスクトップ表示

Mission Control > デスクトップ表示:⌥ Option + D

Tabで選択、スペースで決定を有効にする

「コントロール間のフォーカス移動をキーボードで操作」にチェック

スクリーンショットキーをwindowsと同じ機能にする【Windowsキーボード】

スクリーンショット > 画面のピクチャをクリップボードにコピー:Print Screen/SysRq (F13)

Finder検索がショートカットで開かないようにする

illustrator, photoshopの縮小ショートカットOption + Command + スペースとかぶっていてキーを押す順番によっては勝手にfinderが開くため、それを防ぐ。

Spotlight > Finderの検索ウィンドウを表示のチェックを外す

Macのキー設定

システム環境設定 > キーボード > キーボード

F1、F2などのすべてのキーを標準のファンクションキーとして使用にチェックを入れる

⌘ Command + tab アプリ切り替えカスタムアプリ「HyperSwithc」

同アプリ内の別ウィンドウ切り替えを可能にするHyperSwithcをインストール
HyperSwithc

Preferences

Run HyperSwitch in the background にチェック
all windows: ⌥ Option + tab (※)

※重要!修飾キーの変更でOptionとCommandを入れ替えてるため

マックのキーボードのキーをWindowsの配置に近づける設定

(Windowsのキーボードを使わない場合) マック用のキーボードをWINDOWSのように設定

修飾キーの変更

システム環境設定 > キーボード > 修飾キー

⇪ Caps Lock キー: ⌘ Command
⌃ Controlキー:⌃ Control
⌥ Optionキー:⌃ Control(好みによっては⌥ Option
⌘ Commandキー:⌥ Option

どうにもならない

欠点はControlが角にないためブラウザなどのタブ切り替えがWindowsのようにはいかない(windowsのctrlの機能がmacではcommandとctrlに分散していることが原因)
2020年4月9日

投稿でカスタムテンプレを利用できるようにする

投稿でも管理画面の投稿の属性でテンプレが選べるようにする
/*
 * Template Name: テンプレート名
 * Template Post Type: post
 */

固定ページにもこのテンプレを使いたい場合は

/*
 * Template Name: テンプレート名
 * Template Post Type: post,page
 */

そのテンプレを識別して条件分岐させるには

投稿であってもis_page_templateが使える
if ( is_page_template( 'ファイル名.php' ) ) {

}
2020年4月3日

css text-shadow

color: #666;
text-shadow: 3px 3px 0 #eee, 5px 5px 0 #666;
You effin bastard
text-shadowだけで文字の周りの枠線を2重にする
color: #666;
text-shadow: 2px 2px 0 #fff,
             -2px 2px 0 #fff,
             2px -2px 0 #fff,
             -2px -2px 0 #fff,
             3px 3px 0 #666,
             -3px 3px 0 #666,
             3px -3px 0 #666,
             -3px -3px 0 #666
             ;
You effin bastard

box-shadow

CSSでボックスに下線を入れる

6pxが下線までの距離。10px - 6x = 4px が下線の太さ。
background:#333;
color:#fff;
padding:20px;
box-shadow:0px 6px 0px 0px #fff,0px 10px 0px 0px #333;
You effin bastard
2020年4月2日

CSSだけでtoggle(要高さ指定)

jQueryなしでトグルコンテンツ

html

<input id="toggle" type="checkbox" name="whatever" />
<label for="toggle">Click me to show the freakin' content</label>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>

css

input {
 display: none;
}
input:checked + label {
 color:deeppink;
}
label{
 cursor: pointer;
}
input:checked + label + p{
 height:auto;/*transitionを有効にするにはpxで指定*/
}
p{
 height:0;
 overflow: hidden;
 transition: all 0.2s ease-in-out 0s;
}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
2020年3月10日

Atom の設定

Atom 1.60.0 on Github - atom-windows.zip

Core

プロジェクトサイドバーに表示させないものを設定

Ignored Namesに拡張子で指定

*.psd,*.ai,*.pdf

Ignored Names を有効にする方法

プロジェクトサイドバーに表示させないファイル指定後にすること

Package > 検索「tree-view」 > Settings > Hide Ignored Names にチェック

新規タブで開く

Allow Pending Pange Itemsのチェックを外す

Editor

インデントの線を表示

Show Indent Guide にチェック

インデントの長さ設定

Tab Length を3に

折り返し設定

これで日本語折返される

Soft Wrap にチェック

折り返しの縦線の位置

Preferred Line Lengthで数値設定

そこで折り返す場合はSoft Wrap at Preferred Line にチェック

Keybindings

ショートカットキー編集

keymap.csonを開く

Keybindings > your keymap file というリンクをクリック

Ctrl + Tab での切り替わるタブの順番を変更

タブを1つづつ右へ移動させるように設定するには以下のコードをkeymap.csonへ貼り付ける
'body':
   # ctrl-tabによるタブ順を1つづつ右へ移動させるように設定
   'ctrl-tab ^ctrl': 'unset!'
   'ctrl-tab': 'pane:show-next-item'
   'ctrl-shift-tab ^ctrl': 'unset!'
   'ctrl-shift-tab': 'pane:show-previous-item'
これでCtrl + Shift + Tab で左にひとつづつなる。

Themes

プロジェクトツリー内のファイルアイコンの色を拡張子ごとに変える

[your stylesheet]をクリックしユーザースタイルシートを編集
C:\Users\ユーザー名\.atom\styles.less
.icon-file-text {&[data-name$=".php"]:before      { color:#5e8a6a; }}
.icon-file-text {&[data-name$=".html"]:before     { color:#916456; }}
.icon-file-text {&[data-name$=".css"]:before      { color:#fff; }}
.icon-file-text {&[data-name$=".js"]:before       { color:#0865a7; }}
.icon-file-text {&[data-name$=".htaccess"]:before { color:#8a8c50; }}

Install

ダブルクリックして選択した単語と同じ単語をハイライトさせる

highlight-selected

パッケージが保存されるフォルダ
C:\Users\ユーザー名\.atom\packages

コマンドパレットCtrl + Shift + pでつかうコマンド

コードの自動整形 [Edit > Lines > Auto Indent]

Editor: Auto Indent

githubからのログアウト

GitHub: Logout

Githubとの連携

自分のgithubアカウントからtoken取得

https://github.com/settings/developers

Personal access tokens (classic) > repo,workflow,read:org,user:email にチェック

Atomにtokenを入れてログイン

Package > GitHub > Toggle GitHub Tab

またはステータスバー内右下のGitHub

Atomでgithubからのログアウト方法

コマンドパレットCtrl + Shift + p からコマンドでログアウトする

GitHub: Logout

2020年3月2日

flexbox/grid: 均等幅、1行目と最終行の扱い

FLEX

flexの場合はwrapと幅widthで均等分割パーセント指定。
<ul>
    <li><a href="#">Lorem ipsum dolor sit amet elit</a></li>
    <li><a href="#">ipsum</a></li>
    <li><a href="#">dolor</a></li>
    <li><a href="#">sit</a></li>
    <li><a href="#">amet</a></li>
</ul>

flex:左右余白あり、最終行真ん中寄せ

space-aroundにしてもgapをつくるための余白で左右はピッタリにならない
ul{
    display:flex;
    flex-wrap: wrap;
    justify-content: space-around;
}
ul li{
    width:50%;
    padding:5px;
}
Lorem ipsum dolor sit amet, consectetur adipisicing elit
ipsum
dolor
sit
amet

flex:左右余白あり、最終行左寄せ

子のpadding分でgapを作り、景色や枠線は孫に入れる。
ul {
   padding: 0;
   display: flex;
   flex-wrap: wrap;
}
ul li{
   list-style: none;
   width:50%;/*分割する割合*/
   padding:5px;/*ボックス間marginのようなスペース*/
   box-sizing: border-box;
}
ul li a{
   display: block;
   padding: 10px 15px;/*ボックス内の実際のpadding*/ 
   box-sizing: border-box;
   height: 100%;/*行数違い対策*/
   background:#eee;
}
Lorem ipsum dolor sit amet, consectetur adipisicing elit
ipsum
dolor
sit
amet

GRID

左右ピッタリ、最終行左寄せ

ul{
   display:grid;
   grid-template-columns: 1fr 1fr;/*repeat(2, 1fr)*/
   grid-gap: 10px;
}
li{
   background:#eee;
   padding: 10px 15px;
}
※繰り返し回数を指定する書き方の場合repeatとカッコの間にスペースを入れると動かない
Lorem ipsum dolor sit amet, consectetur adipisicing elit
ipsum
dolor
sit
amet

auto-fitとauto-fillの違いは1行目の扱い方

auto-fit:1行目は常に左右ピッタリ

  • 最小幅が100px
  • 1行目は必ず左右ぴったり。1行目のボックス最大幅に限界がない
  • 最終行は左寄せ
画面幅が縮まりボックスひとつの横幅が100pxより小さくなる時点でボックスが改行される。
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
Lorem
ipsum
dolor
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing

auto-fill:1行目は左寄せの左右のピッタリ

  • 最小幅が100px
  • 1行目のボックスのが足りないときは左寄せ(特定の画面幅以上)
  • 最終行は左寄せ
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
Lorem
ipsum
dolor
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing