過去記事をSNSへランダムに投稿するWordPress用プラグイン「Revive Old Post」を利用されている方は多いと思いますが、記事に付与したタグをハッシュタグとして利用するよう設定(「Create hashtags from Tags」)していると日本語のタグがURLエンコードされた形でポストされ文字化けした状態になってしまう不具合がありいつまで経っても修正される様子がないので痺れを切らして自分で直すことにしました。
Revive Old Postの最新バージョン7.5.0の場合、修正すべき箇所は「tweet-old-post/inc/core.php」の840行目付近。下記の1行を追加すればOKです。
case 'tags':
$postTags = wp_get_post_tags( $postQuery->ID );
foreach ( $postTags as $postTag ) {
$thisHashtag = $postTag->slug;
$thisHashtag = urldecode ($thisHashtag); // <---- この1行を追加
if ( $this->tweetContentHashtag($tweetContent, $thisHashtag) !== false ) { // if the hashtag exists in $tweetContent
$tweetContent = $this->tweetContentHashtag($tweetContent, $thisHashtag); // simply add a # there
$maximum_hashtag_length--; // subtract 1 for the # we added to $tweetContent
}
elseif ( strlen( $thisHashtag . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
$newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $thisHashtag ) );
}
}
break;
ソース斜め読みですが、wp_get_post_tagsの中でslugをURLエンコードしちゃってる?ような感じだったので、デコードして元に戻してます。他にもやりようはいくつか思いつきますが、この対応が他への影響も少なく安心かと。
あまり検証はしていませんがおそらくこれで問題無い…はず。(笑)