"%"が"-"に置換されないようにコードを変更し、最後にUnicodeエスケープ
Unicodeエスケープの前にURLエンコード文字列をデコードする。
Unicodeエスケープはやめた。
return esc_html( $hashtag );
の前に
$hashtag = urldecode( $hashtag );
を入れるだけ。
ドイツ語のハッシュタグ #Wälder → 日本語と同様、文章中だとハッシュタグにならない。そして #WordPress にドイツ語のままハッシュタグを追加したが、 #Mastodon で見ると「walder」とウムラウトが無くなっている。
「'name' => esc_hashtag( $post_tag->slug )」を「'name' => esc_hashtag( $post_tag->name )」に変えても結果は変わらない。
ハッシュタグを並べる[ap_hashtags]に該当する
/wp-content/plugins/activitypub/includes/class-shortcodes.php
のhashtags()関数を修正してテスト。
https://ishii00141.stars.ne.jp/20251125-0039-4145/#comment-1169
抜粋テストも兼ねる。訂正。さらに訂正。さらに訂正。さらに訂正。さらに訂正。さらに訂正。抜粋コードの修正はいったん終了。元に戻ってしまったので再修正。さらに修正。さらに修正。
暫定的に英語にしていた省略記号を日本語に戻してみる。


コメント
おかしい。ap_outboxのJSONは次のようになっていて、「'name' => esc_hashtag( $post_tag->name )」に変えた効果が表れている。それにもかかわらず、#Mastodon で変化が無かったのはどうしてだ?