WordPressでpictureタグのsrcsetはshortcodeが効かない

解決策ででてくるblogのタグが動かないのでお願いChatGPTで解決したので備忘録。

function generate_image_tag($atts) {
    $atts = shortcode_atts( array(
        'img' => '',
        'alt' => '',
        'webp' => true,
        'theme_url' => get_bloginfo('template_url'),
        'picture_class' => '',
    ), $atts );

    // File path details
    $file_info = pathinfo($atts['img']);
    $file_dir = $file_info['dirname'] != '.' ? $file_info['dirname'].'/' : '';
    $file_url = $file_dir . $file_info['filename'];

    $output = '<picture';

    // クラスが指定されていれば追加
    if (!empty($atts['picture_class'])) {
        $output .= ' class="' . esc_attr($atts['picture_class']) . '"';
    }

    $output .= '>';

    if (strtolower($file_info['extension']) === 'svg') {
        // If the file is an SVG
        $output .= '<source media="(min-width: 768px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'.svg" type="image/svg+xml">';
        $output .= '<source media="(max-width: 767px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'_mobile.svg" type="image/svg+xml">';
        $output .= '<img src="'.$atts['theme_url'].'/images/'.$file_url.'.svg" alt="'.esc_attr($atts['alt']).'">';
    } else {
        // For other image types (non-SVG)
        $use_webp = $atts['webp'] && in_array(strtolower($file_info['extension']), array('png', 'jpg'));

        // WebPが指定されている場合
        if ($use_webp) {
            $output .= '<source media="(min-width: 768px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'.webp" type="image/webp">';
            $output .= '<source media="(max-width: 767px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'_mobile.webp" type="image/webp">';
            $output .= '<img src="'.$atts['theme_url'].'/images/'.$file_url.'.'.$file_info['extension'].'" alt="'.esc_attr($atts['alt']).'">';
        } else {
            // WebPが指定されていない場合
            $output .= '<source media="(min-width: 768px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'.'.$file_info['extension'].'" type="image/'.$file_info['extension'].'">';
            $output .= '<source media="(max-width: 767px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'_mobile.'.$file_info['extension'].'" type="image/'.$file_info['extension'].'">';
            $output .= '<img src="'.$atts['theme_url'].'/images/'.$file_url.'.'.$file_info['extension'].'" alt="'.esc_attr($atts['alt']).'">';
        }
    }

    $output .= '</picture>';

    return $output;
}
add_shortcode('generate_image', 'generate_image_tag');

これで固定ページに以下のショートコードを挿入することで、SVGの時はSVGとして、jpg/pngでwebp用意している・していない時を切り替えることができる。

使い方は

[generate_image img="ディレクトリ+ファイル名" picture_class="pictureへのclassを入力(複数可)" alt="alt属性を入力" webp="true/false"]

img=””にファイル名を入力。拡張子がsvgの時は、webp=””は省略可能。
webp=””はファイル拡張子がpngまたはjpgの時、用意しているのであればtrue、用意していないときはfalseを設定。

迷い人の解決になれば。

自宅のMacをMacbook Pro : M3 Proにしようと思ってる話

最近自宅のMacを使う機会が多いけど、USB関連に不具合が多いので解消したいと思った。
どちらにせよOpen CoreでVenture以上にするにはMac Pro 5.1はUSBをアップグレードしないといけない。(AppleがUSB2.0 Host Controlerのサポートを打ち切ったため)
しかしPCIe USB3.0は一度玄人志向のものを買ったらSATAの電源を供給しても何故か動作せずお金を無駄にした。となると動作報告が多いInateck製が安定しそうだが価格が高い。(4,600円)

しかしもうここまでくるとWindowsはWindows機としてあるわけだし、MacPro Mid2010を無理やり使いつづける必要ってないんじゃないのかなーと思い始めた。
正直その投稿目指してうちのBlogに来る人が多いけど、そのためだけにイジるにはちょっとお金かかり過ぎてきたなーの気持ち。
多分もう少しくらいは行けそうな気がするけど、来年で14年目となるPCを使い続けるのはどうなのって気分。

そこでApple整備品のMacbook Pro M2pro 32GB/1TBの構成で探していたときにふと思ったのが、整備品はどうしてもキーボードがJIS配列に換装されて並ぶためUS配列キーボードが存在しない。
狙っていた機種の価格は30.8万で、最新のM3 pro 36GB/1TBは41.2万。
価格差は10万で英語配列キーボードと暫く満足がいくMacが使えると考えると悪く内容に思えた。

ところでAppleがオンラインストアで新品を安く買える日をご存知だろうか?
そう年明けの初売り(1/2と1/3)だ。
この日だけ新品をカスタマイズして買ってもギフトカードでだいたい10%分くらいの還元がある。(カスタマイズすると上限頭打ちする)

2023年の初売りバナー

つまり買うならその日だ。
届くのがいつになるかは知らない……急いでないからいいか。

YAMAHA NVR500でDHCP固定IPをNASに設定したい

備忘録がてらメモ。

Windowsの場合はtelnetが初期でインストールされているが、Macだとなかったのでインストールから。

$ brew install telnet

次にNVR500のIPにtelnetでアクセス。

$ telnet 192.168.***.***

ログインパスワードを聞かれるので入力。
DHCP情報なんかも見るコマンドを打ち込んでも文字化けしているのでよくわからない。
先に文字コードを変更しておく。

> administrator
Password: // 管理者のパスワードを入力
> console character ascii // 文字コード変更
> save // 設定を保存
Saving ... CONFIG0 Done .

現在のDHCP情報の確認はshow status dhcpを入力する。
本題の固定IPの設定は以下の書式

> dhcp scope bind scope 1 192.168.***.*** NASのMacアドレス

もし間違っちゃったぜ!というときはdhcp scope unbind 1 192.168.***.***と記載している情報が多いのだけど、ボクの環境では「パラメーターが整数ではありません」とエラーがでた。
そこで先達の知恵に感謝しつつ、以下で解決。

> no dhcp bind scope 1 192.168.***.***

知恵を残してくれた先達に感謝を。
ヤマハルーターnvr510でv6プラスを+α

XserverにSSH接続しようとすると「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」が出る場合の解決策

Google検索してもいかがでしたか????されて役に立たない解決策がでてこないので怒りの投稿。Google検索の汚染具合がひどすぎて最近はBing検索に切り替わりつつある。公式サイトがでてこないとか頭悪すぎる。

解決策

もしSSH接続をコマンドラインで行っている場合

$ ssh -l サーバーID -p 10022 -i 公開鍵ファイルを指定 sv****.xserver.jp

ユーザーIDを指定する箇所はサーバーのIDを指定(sv****の形ではない)

xserverのサーバーコントロールパネルの上部に記載がある。(例ではhogehoge

サーバーID(ユーザーID)

接続先のサーバーはサーバー情報のホスト名を指定

公開鍵ファイルは自分で作っても、コントロールパネルで生成しても良い。
まとめると

$ ssh -l hogehoge -p 10022 -i ~/.ssh/id_rsa_xserver sv00000.xserver.jp

みたいな形で接続が可能。
とくにユーザーIDを間違っているだけで一生「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」を吐き出され続ける。

もしこれでなおらない場合は、秘密鍵のパーミッションが600になっていない可能性はもちろんあるので、だめなら確認しても良い。

怒りのいかがでしたかで疲れた人のお役に立てば。

さくらインターネット(共用ホスティングサーバ)で、WordPressが500エラーで管理画面を開けない

最近ローカルdockerで開発したあとに、Wordmoveで一式アップロード後、ごくまれにこの現象が発生していて難儀していたので備忘録がてらメモ。

結論

wordpress格納フォルダのパーミッションが777になっている場合は、755に変更する

[cgi:error] [pid 00000] [client 000.000.000.000:0] AH01215: suexec policy violation: see suexec log for more details:

CGI使ってないのになんでエラーが……という理由はわからないが、調べたらパーミッションエラーとのことだったので確認すると、フォルダのパーミッションが777だった。

検証サーバなので、管理画面からインストールしている他のサイトのWordperssフォルダは確認すると755だったので、ならって755に修正すると500エラーが解除された。

ハマっている方の役に立てば幸い。

Mac OSでVisual Studio code(VS code)のインデント解除ショートカット ⌘(command) + [ が動作しない

クリーンインストールしたMontereyで何故かVS codeでインデント解除のショートカット ⌘ + [ が動作しなかった。
しかもなぜかHHKB(Happy Hacking Keyboard 英字配列キーボード)でだけ動作しない。

Macのキーボードビュアーを見ると、⌘と[を同時に押すと反応しているので、理由がわからないがVS codeでだけ動作しなかった。
(新たにショートカットを変更しようと入力すると、⌘キーだけ入力される)

解決策

MacOSの [ 環境設定 ] → [ キーボード ] → [ ショートカット ] → [ キーボード ] → [ 次のウィンドウを操作対象にする ⌘@ ] をOFFにする または別のショートカットに変更して、OSを再起動

当該箇所のチェックボックスをOFFまたはショートカットキーを変更する

理由が不明だが、⌘ + @で日本語キーボードの位置にある@が優先されてしまっているようだ。マジで謎バグ。

解決策をBlogでのこしてくれていた神に感謝を。

学習する天然ニューラルネット / Visual Studio Code 等のアプリで command + [ (open bracket) がmacOSに吸われるニッチなバグの解決