お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
投稿日:
ソフトウェア::WordPress

YARPP – Yet Another Related Posts Pluginのサムネイル表示がどうにも気に入らなかったのでSANGOのスタイルに合わせるだけのやつを作りました。YARPPのカスタムテーマとしてSANGOのアドセンス関連記事型広告ウィジェットに差し込むことを想定しています。

こんな感じで、SANGO標準の関連記事表示と変わらないやつです。

カスタムテーマの見た目

Gistに置いてるので、もし欲しい人がいたら持っていって好きに改造して使ってください。

最初はプラグインにして配布しようとか思ったのですが、 構造的に無理だったので諦めました。パッと見はWordPressのエコシステムに上手いことインジェクションしてやってるのかと思ったのですが、内部の処理としてはYARPPがTemplateファイルをrequired_onceで読み込んで内部でWordPressのエコシステムを再現することで実現しているという事が解り、YARPPの管理外にあるプラグインでは実現が難しかったため、一番無難なテンプレート形式に収めて終わりにしました。

投稿日:
ソフトウェア::WordPress

WordPressの組み込みURL埋め込みがクソなので自作しようとしたら意味不明な挙動に出会ったので残しておく。

確認環境

  • WordPress 6.2
    • Classic Editor

起きた現象

端的に書くとshortcodeでAタグの中にブロック要素を含ませるような出力を記事本文中ですると初回だけAタグが外れます。

イメージ的にはこういう感じのやつ

<a href="https://example.com">
  <figure>
    <img src="https://example.com/foo.jpg" alt="" width="200">
    <figcaption>foo</figcaption>
  </figure>
</a>

例えば以下のような出力が起きます。ちょっとなんかかなりHTML崩壊してませんかね…?

理想 現実
理想の出力
現実の出力

参考までにショートコードを二回以上書くと二回目以降はPタグなどのゴミが混ざるものの理想に近い出力になります。原因は不明。WordPressのバグかなんかじゃないかな…。

再現コード

このショートコードを記事本文に二回書くと二回目にはAタグが効くことが確認できます。

function emb_test($atts) {
  $url = $atts["url"];
  $img = $atts["img"];
  $title = $atts["title"];

  return <<<EOD
<a href="$url>
  <figure>
    <img src="$img" alt="" width="200">
    <figcaption> $title </figcaption>
  </figure>
</a>

EOD;
}
add_shortcode('emb', 'emb_test');
出力結果
出力結果

何故起きるのか?

wpautop のせいだとは思います。この機能自体は普段記事を書く上で便利ですし、タグやカテゴリの説明にadd_filterしてやるといい感じに改行が反映されたりして便利なのですが、shortcodeの中に入ってくるとかなり邪魔ですね…。

因みにAタグの中にインライン要素を入れてる限り、この現象は起きないのですが、その場合CSSでブロック要素にする必要があるのと、セマンティクスとかコーディング的な微妙さを感じたので、それはしないことにしました。

取り敢えずWordPressで良い感じにURLを埋め込むのは余り現実的ではなさそうなので諦めることにしました。正直WordPress 組み込みの埋込機能は使い勝手が悪く微妙です。有名SNSだけ埋め込めればいい人にはこれでいいでしょうけど…。

仕方がないので5年くらい前に使って体験が微妙だった Pz-LinkCard を使ってみたらかなり良くなっていたので、Pz-LinkCardを使うことで解決することにしました。ありがとうPz-LinkCard…ありがとう…。

コードの供養

書いたけど期待通り動かなかった本来やりたかったコードです。

function embed($atts) {
	$url = count($atts) > 0
	  ? $atts[0]
	  : "";
    $dom = new DOMDocument();

    $data = wp_remote_get($url);
    if (is_wp_error($data)) {
        return;
    }

    $html = $data['body'];
    $doc = new DOMDocument();
    @$doc->loadHTML($html);
    $metas = $doc->getElementsByTagName('meta');
    $title = '';
    $description = '';
    $image = '';
    foreach ($metas as $meta) {
        if ($meta->getAttribute('property') == 'og:title') {
            $title = $meta->getAttribute('content');
        }
        if ($meta->getAttribute('property') == 'og:description') {
            $description = $meta->getAttribute('content');
        }
        if ($meta->getAttribute('property') == 'og:image') {
            $image = $meta->getAttribute('content');
        }
    }
    if (!empty($title) && !empty($description)) {
		return <<<EOD
<a href="$url">
  <figure>
    <img src="$image" alt="$title">
    <figcaption>
    $title
    $description
    </figcaption>
  </figure>
</a>
EOD;
    }
}
add_shortcode('embed', 'embed');

内容

数分前まで普通に動いていたWSLのUbuntu 20.04.4 LTSをターミナルで開くと以下のエラーが表示された

Error: 0x80040326
Error code: Wsl/Service/0x80040326
Press any key to continue...

解消法

WSLをupdateしたら直ったが原因は不明

wsl --update

参考情報

  • https://github.com/microsoft/WSL/issues/9867
    • 原因はわからないがWSLをupdateすると解決するという内容
投稿日:
ジャンル::生活ジャンル::買い物

半年前にマンションの通気口そのものを交換して、いいヤツにしてみたのですがそれでも花粉がひどいのでフィルターを見たところ真っ黒になっていたので交換した話です。因みに元の通気口は保管してるので原状回復に支障がないようにしてます。

通気口

ユニックスのKRP 150BWFHを使っています。150cm経のやつ。よくあるプッシュ式で見た目もモダンでいいです。

余談ですが元々あったのは PDG-AWFH で、部屋が負圧にならない限り吸気を止める構造だったので、換気をよくするために本製品に交換しました。(恐らくキッチンの換気扇用で24h換気向けではない)。ついでに高性能フィルターが装備できたので装備している感じです。

20230329_003628-scaled.jpg

今回購入したフィルター

ユニックスのTF150A-KRPというフィルターを購入しました。当面分買っておこうと3つ購入。公式サイトやマニュアルによると花粉を 95%、PM2.5 を 50%捕獲できるとされており、かなり高性能なフィルターです。

20230329_001610-scaled.jpg

因みにフィルたんを併用することで更に花粉をカットできないか試して見ましたが、特に効果はありませんでした。恐らくユニックスのフィルターの性能が高く、その上にフィルたんを重ねたところで大きな効果はなかったということでしょう。フィルたんには捕獲率が書いてなかった気がしますし、余り効果は期待できない気もしました。

ただフィルたん自体はよく考えられた製品で、色々な通気口に合わせられるように切れ込みが複数入っています。画像の中央の穴と下の裂け目も元々は埋まっていて、部品を外すことでこの形にできました。

20230329_022413-scaled.jpg

特にスペックの記載がないにせよ結構な厚みがあるため、ちゃんとしたフィルターがないケースではそれなりに役に立ってくれそうな気もします。目が粗いのでどれほど活躍してくれるかは未知数ですが…。

20230329_022332-scaled.jpg

フィルター交換

左が今まで使ってたやつ、右が新品です。半年でかなり真っ黒になっているのでフィルターとしてだいぶ仕事をしていてくれたことがわかります。マニュアルによると半年ごとの交換が推奨されているとのことでちょうどいいタイミングでした。

20230329_001939-scaled.jpg

runasでは上手く出来ないっぽいのでPowerShellを呼んで実行する。管理者実行したいコマンドを分けたい時に活用できる。

確認環境

Env Ver
Windows 11 Pro 22621.1413

サンプルコード

powershell start-process <ここにコマンド> -verb runas

備考

PowerShellのリファレンスに沿って書くなら大文字小文字を書き分ける方がより正しいが、基本的に大文字と小文字を区別しないため、どっちでも動く。

powershell Start-Process <ここにコマンド> -Verb runAs