2018年12月16日日曜日

WordPress5.0を試用してみて

先日WordPress 5.0がリリースされた。通常だったらすぐに使い始めるところなんだけど今回はエディタが全く新しいものに変わるということでまだ更新していない。

だいぶ前から新しいエディタGutenbergにするとショートコードはどうなるのかとかカスタムフィールドの入力ができないとか過去に投稿した記事との互換性がどうとか心配事があるからだ。

幸いなことに自分が使わせてもらっているレンタルサーバーは無料で使えるステージングサーバーが用意されている。なのでこれを使って自分のブログがWordPress 5.0にうまくはまるかを試してみた。

WordPressで運営しているサイトがふたつあってひとつはシンプルなブログでもうひとつはカスタマイズ多めなサイトだ。まずはシンプルなブログで試したところこちらは問題なく移行できるようだ。

気にしてたこと・気になったこと

ショートコード

ショートコードに関しては特に問題なくこれまで通り使える。ショートコード専用ブロックもある。

カスタムフィールド

カスタムフィールドは入力エリアがなくてどうしようかと思ったけれど右上の縦三点メニューからオプションを選ぶとカスタムフィールドをオン・オフするような項目があったのでこれをオンにすることで使えるようになった。
ただカスタムフィールド入力エリアは以前のようにエディタの下部に表示されたのが残念。GutenbergのUIなら右サイドバー内に存在すべきだと思う。なんからしくないな。

あと編集中にカスタムフィールドをオンにしたら編集中の画面が消えて新規作成画面になった。投稿一覧を見ると編集中だったものは下書き状態で残っていたがこの挙動はおかしいと思う。

プレビュー

編集中にプレビューのボタンを押せば当然プレビュー画面が表示される。そして後から見出しブロックを追加してプレビューを押すとその追加した見出しが表示されない。不具合じゃないかと思う。

過去との互換性

過去の記事を開くと全体がクラシックブロックになるのでとくに困らないようにおもう。だいたい過去の記事を書き換えることはまず無いし。たまにあっても誤字の修正くらいだし。

またクラシックエディタプラグインをインストールすると記事ごとにクラシックエディタかGutenbergを選択できるしデフォルトをどちらにするかも決められる。なのでクラシックエディタプラグインをインストールすればより安心できそう。

Gutenbergのブロックの種類にカスタムHTMLもあるので例外的にHTML直打ちしたいときも大丈夫そう。これはクラシックエディタのビジュアルモードには(たぶん)なかったのでこれはありがたい。

コンテンツ構造が表示されるが

エディタの上部にコンテンツ構造というアイコンがあってそれを押すと見出し(Hx)の一覧が表示される。これがどうも投稿のタイトルをH1だと決めつけているようだ。
自分の場合ブログタイトルをH1、投稿記事のタイトルをH2、記事内見出しをH3、H4としているので、コンテンツ構造を表示するとH2が無くH3からになるため”見出しレベルに間違いがあります”と表示されてしまう。
自分は一般的なやり方とはちがうのだろうか?

エディタ用CSS

ビジュアルエディタではadd_editor_style()をfunctions.phpに記述することでeditor-style.cssを読み込んで独自の見た目にすることができたけどWordPress5.0ではできていない。ブロック式になった都合で多分やり方が変わったんだと思うのでこれはあとで調べることにする。



次はちょっとカスタマイズ多めなサイトがどうなるかの検証をしようと思う。



2018年4月24日火曜日

Wordpressの月別アーカイブウィジェットの月を強引に2桁表示にする

Wordpressのアーカイブウィジェット(投稿の月別アーカイブ)は「1~9月」を一桁で表示するのでずらっと並べるとそのぶんちょっとガタガタになってしまう。
なのでどの月も二桁になるようにしたいのだけどその方法がない。ウィジェットのオプションにはないし、Wordpressのフィルターとかでも制御できない。

Wordpressの関数にwp_get_archives()があってアーカイブのリンクを表示するという意味では同じ機能だ。これで出力を文字列で受け取って文字列置換で強引に二桁にするとことができる。

$my_archive_list = wp_get_archives(array('echo' => 0));
$my_archive_list = preg_replace('/年(\d)月/', '年0${1}月', $my_archive_list);

ただ、それで実際に表示させようとするとsidebar.phpに記述することになり、ウィジェットをドラッグアンドドロップで並び替えるというせっかくの仕組みから外れてしまう。

ちょっと半分あきらめ、半分未練がある状態のときに自作ウィジェットを追加できることを知った。そうだった。投稿タイプを追加できるようにウィジェットもまた追加できる。Wordpressならそれぐらい出来てもおかしくないと気づくのが遅かった。

とはいえウィジェットを追加するにはハードルが高いんじゃないか、と思っていたけどクラスを継承して必要なところだけ記述ればいいこともわかった。

class my_archive_widget extends WP_Widget {
    function __construct() {
        // 省略
    }

    function widget($args, $instance) {
        // 省略
    }

    function update($new_instance, $old_instance) {
        // 省略
    }

    function form($instance) {
        // 省略
    }
}
add_action('widgets_list',
    function(){return register_widget('my_archive_list');}
);

これをプラグインディレクトリに置いて有効化して使っている。