SmartFormat feed for SmartNewsなるプラグイン

こんにちは。知財FAQの中の人、弁護士の笠原基広です。

知財FAQはSmart News様に記事を配信させていただいています。

Smart Newsに記事を掲載していただくためには、Smart Formatという独自のRSSみたいなフィードを提供する必要があります。幸いにも「SmartFormat feed for SmartNews」という公式のプラグインがありますので、これによって、Smart Formatを配信することができます。

ダークモードロゴの挿入

しかし、このプラグインは若干古くダークモードに対応していないようです。Smart NewsはiOSのダークモードに対応していています(Androidはわかりません)。具体的には、夜になるとバックグラウンドが白(#fffff)から黒(#F5F5F5)になります。

ダークモードのロゴを指定していないと、バックグラウンドが白のままロゴが切り取られたような表示になります。折角ですので、ダークモード用に明るい階調のロゴを作ってみました。

通常モード
ダークモード
ダークモードロゴ

クラス名とスタイルの削除

また、SmartNewsはdivタグのクラス名やインラインのスタイルの指定が長すぎると表示がおかしくなってしまうようです。gutenbergが出力するクラス名やインラインスタイルはものすごく長いのですが、こららが長すぎるdivタグで囲まれた部分が、SmartNewsで表示されなかったりします。

Smart Formatはcssが反映されず、imode時代のcHTMLみたいに、基本的なHTMLタグを使えるだけです。クラス名やスタイルは余事記載ですので、全て削除してしまって問題ありません。

そこで、「SmartFormat feed for SmartNews」を修正することにしました。もっと良いやり方があるのかもしれないですが、よくわからないので直接プラグインをいじっちゃいます。

まず、ダークモードのロゴに対応させるため、snf:darkModeLogoを追加します。具体的には、「プラグインを編集」からSmartFormatを選択して、feed.phpの47行目あたりにダークモードロゴのURLを挿入します。

<snf:logo><url><?php echo wp_get_attachment_url(get_option('smartformat_logo_attachment_id')) ?></url></snf:logo>
<snf:darkModeLogo><url>https://chizai-faq.com/wp-content/xxxx.png</url></snf:darkModeLogo>

また、正規表現を用いてクラス名を削除するために、feed.phpの70行目あたりの次のコードを

<content:encoded><![CDATA[<?php echo get_the_content_feed( 'smartformat' ); ?>]]></content:encoded>

次のように修正しました。

<content:encoded><![CDATA[<?php echo preg_replace('/\sclass\=\"[\s\S]*?\"|\sstyle\=\"[\s\S]*?\"/', '',get_the_content_feed( 'smartformat' )); ?>]]></content:encoded>

これで、feedからdivタグのクラス名とスタイルが全て削除されます。feedも小さくなりますし、表示も乱れなくなりました。めでたし。

笠原 基広