カスタムフィールド内のWYSIWYGエディターの見出しを制限したかったが、できなかった
カスタムフィールドのプラグインとして、
現在はSmart Custam Fields を使っている。
b-risk.jp
WYSIWYGエディターの項目も作れるんだけど、
そのエディターの中の「見出し」を制限したかった。
(デフォルトだと「段落」「見出し1~6」「整形済みテキスト」から選択できる。)
失敗 その1
functions.phpにこれを書く
<?php add_filter( 'tiny_mce_before_init', 'custom_tiny_mce_formats' ); function custom_tiny_mce_formats( $settings ){ $settings[ 'block_formats' ] = '段落=p;見出し1=h1;見出し2=h2;'; return $settings; } ?>
反映されず。
失敗 その2
テーマフォルダ内に custom_editor_style.css を作成してあれこれ書いた上で、
functions.phpにこれを書く。
<?php function my_editor_style_setup() { add_theme_support( 'editor-styles' ); add_editor_style( 'custom_editor_style.css' ); } add_action( 'after_setup_theme', 'my_editor_style_setup' ); ?>
反映されず
失敗 その3
止むを得ず、苦肉の策として
functions.phpにこれを書く。
<?php function custom_edit_newpost_delete($hook) { if($hook == 'edit.php' || $hook == 'post.php'){ echo '<style>#mceu_123,#mceu_124,#mceu_125,#mceu_126,#mceu_127{display:none;}</style>'; } } add_action('admin_enqueue_scripts', 'custom_edit_newpost_delete'); ?>
これで「見出し3~6」「整形済みテキスト」を見えなくすることには、ひとまず成功した
かのように思われたが、しかし!
項目ごとに割り当てられるid、なんと記事ごとに生成されるようなのだ。
別の記事を見たら、見出し1= #mceu_98, 見出し2= #mceu_99 になっていた。
なので、非表示に成功したのは、該当する1記事だけだった。
ダメだった。つらい。
ところで「WYSIWYG」って、「What You See Is What You Get」の略らしい。
ウィジウィグって読むとか。知らなかった。
脳内でも特に音で読んでなかったから、いつまでも文字列が覚えられなかった。
一人っきりで適当に仕事してると、こういうことがよくある
参考
yumegori.com
中サイズ、大サイズのアイキャッチ画像もトリミングする
noteからWordPressへの記事の移植が大変だった
多数の画像や埋め込みを含む約50記事を、noteからWordPressにお引越しさせました。
note エクスポート機能ついてないの、つらい
ブラウザ機能の「ページを保存」だと不十分
noteのコンテンツは動的に生成される部分が多くて、
「ページを別名で保存」だと使い物にならない。
そこで以下の方法をとった。
概要
- ツールを用いてJSONデータを得る
- 各記事に使われている画像をダウンロード&アップロード
- テキストエディタを使って正規表現で置換、JSONをcsvにする
- csvをWordPressにインポート
- 埋め込み・ブログカードなどを手動で貼り直す
- ターミナル(Mac)やテキストエディタを使います
- JSONをcsvにするところは、正規表現を用いた置換に慣れてないと難しいかも
- JSONをそのまま扱えるならその方がよいだろうが、私にはその知識がなかった
神ツール その1
存在に感謝。ありがとうございます。
これをダウンロードしてから、ターミナルでそのフォルダに移動して
npx unnote export $USERNAME
を実行すると、
JSONデータを得ることができる。
data > note フォルダの中の、各記事に分かれたデータを使用する。
ただし、画像はnoteのサーバーに置いてあるまま、直リンクされている状態。
なので、Chrome拡張機能を使って、各記事から画像をダウンロードしてくる。
神ツール その2
これでページ内の全ての画像をダウンロードできる。
noteの1記事1記事にアクセスし、画像をダウンロードしていく。
ただし、このままではアイコン画像や装飾など不要な画像が多数含まれるので、
「Select all」してから、不要な画像のチェックを外す。
ダウンロードした画像は、FTPソフトで好きな場所にあげておく。
注意
noteのページは動的に生成されるので、
ページを最後まで読み込んだ状態で「Image downloader」を動かさないと、
最後の方の画像を読み込んでくれなかったりする。
正規表現を駆使して、JSONデータをテキストエディタで置換
「Really simple CSV Importer」でのインポートを目指して、データを整形していく。
「unnote」で得たJSONデータには、コメント欄、おすすめ記事、いいね数、など、WPに移植する分には不要なデータが大量に含まれる。
これを正規表現を使って削り、titlle, contents, 公開日時 だけの状態にする。
このへんの置換に使った正規表現は試行錯誤しまくって忘れてしまったので、記録はありません。(ごめん)
コンテンツ内の画像のフォルダ置換はこんな感じ
https://assets.st-note.com/production/uploads/images/(\d+)/
これを検索+置換で、アップロード先のフォルダ(~~~/wp-content/uploads/2021/01など)に置換する。
フォルダ内一括検索+置換でやるのが良いと思う。
あとは、CSV Importerのお手本に合わせて、
「"post_type"」用の「"post”」みたいな項目を付け加えたりしていく。
セル内のテキストは""で囲まないといけないので、そのあたり気をつける。
Really Simple CSV ImporterでWordPressにCSVをインポートする
"post_status"を指定しない状態でインポートすると、全部の記事が下書き状態になるはず。
このあたりはお好みで
手動で埋め込みやブログカードを直していく
note は YouTubeやGoogle mapなどの埋め込みを、iframeではなくfigureを使って、独自のシステムで表示させているっぽい。
ブログカードも同様。
なので、これらを手動で直していく。
iframeやブログカードの挙動は使っているWordPressのテーマにもよると思うので、各自でがんばってください。
アイキャッチ画像も一括置換の時に post_thumbnail に反映できればよかったんだろうけど、JSONデータの中のどこがアイキャッチ画像なのか判別ができなかったので、手動で設定し直した。
あと、下書きで作業してる場合は、
公開日時をいったん指定し直さないと、下書き→公開を押した日時(つまり今)に書き換わってしまったりします
以上です
めんどくせ〜〜〜!!
けど各ツールの助けで無事に約50記事を移植できて、本当によかった!!
(手作業の分量もそこそこ多かったけど)
noteさんは一刻も早くエクスポート機能を付けてくださいね!