メジャーアップデートである v8 をリリースします。メジャーアップデートは後方互換性に問題がでる可能性があるため、テスト環境で動作確認をしてから本番環境に適用することをおすすめします。
特に、子テーマや My Snow Monkey でテンプレートの上書き・独自の Snow Monkey 専用プラグインの開発をおこなっている場合はなんらか影響がでる可能性がありますので、事前のテストを強く推奨します。
v8 の概要
機能追加
- WordPress 5.3 対応
- ヘッダーコンテンツでのショートコードのサポート
- ブログカードカスタマイズ用のフックを追加
- Snow Monkey オリジナルウィジェットカスタマイズ用のフックを追加
変更(後方互換性的に影響がでる可能性がある点)
- クエリテンプレートの読み込み処理をリファクタリング
- テンプレート読み込み関連フックの挙動変更
- フッター固定ナビゲーションの挙動を変更
- 子テーマ利用時以外もテンプレート上書き関連のデバッグ警告がでるように変更
- 追尾サイドバーの CSS 化
- 各ウィジェットブロックのスタイルを調整
- パンくずナビの HTML 構造を変更(全体を
.p-breadcrumbs-wrapper
で囲む) - フック名の変更
- 左右回り込み(
.alignright
、.alignleft
)の最大幅指定を追加
不具合の修正
- エディターに URL を貼りつけたとき、ブログカードではなく URL が表示されてしまう不具合を修正
- 「追加 CSS」のエディター反映機能が at-rule の入れ子に対応していない不具合を修正
- 「Snow Monkey: 最近の投稿」ウィジェットにおいて id 属性の重複が発生する不具合を修正
- PHP 5.6 で
Strict standards: Static function
の警告がでる不具合を修正 - オーバレイウィジェットエリア内のリンクがクリックできない場合がある不具合を修正
- macOS Catalina + Chrome でフォントが明朝体になることがある不具合の対応
- タグアーカイブ・年別アーカイブに1件目の記事のアイキャッチ画像がページヘッダーとして表示されることがある不具合を修正
WordPress 5.3 対応
Snow Monkey v8 未満の場合はブロックエディター上でスタイルの崩れが発生する可能性があります。WordPress 5.3 以上をお使いの場合は、Snow Monkey v8 以降の利用を推奨します。
ヘッダーコンテンツでのショートコードのサポート
これまでヘッダーコンテンツでショートコードを使うためにはカスタマイズが必要でしたが、v8 からはこのカスタマイズは不要になります。もし下記のコードを使っている場合は削除推奨です。
クエリテンプレートの読み込み処理をリファクタリング
WordPress にアクセスがあったときに最初に呼びだされるテンプレート(= クエリテンプレート。singular.php
、archive.php
など)の読み込み処理を最適化しました。
この変更の影響で、snow_monkey_controller
の第2引数が廃止されましたので、使用していた方はご注意ください。
テンプレート読み込み関連フックの挙動変更
snow_monkey_get_template_part-<slug>
、snow_monkey_get_template_part-<slug>-<name>
アクションフックで定義したテンプレートの内容も、snow_monkey_template_part_render
フィルターフックでカスタマイズができるように変更しました。
フッター固定ナビゲーションの挙動を変更
フッター固定ナビゲーションを利用している場合、これまでは最下部までスクロールすると自動的に body
に下余白が追加され、フッター固定ナビゲーションに隠れることなく最下部のコンテンツも閲覧ができるようにしていました。
ただ、これだと都度下余白を追加するかどうかの計算が必要になり、描画速度に若干の影響があることが考えられます。用途的にそのデメリットを受け入れる必要はないかなと判断し、最下部までスクロールするとフッター固定ナビゲーションが消えるように挙動を変更しました。
子テーマ利用時以外もテンプレート上書き関連のデバッグ警告がでるように変更
下記の場合に警告がでます。
- 呼びだそうとしているファイルが存在しないとき
- テンプレートを古い配置で上書きしているとき
- 呼びだしているファイルのバージョンが古いとき
追尾サイドバーの CSS 化
これまで JavaScript でおこなっていた追尾サイドバーの位置制御を CSS 化しました。これにより、これまで若干発生することがあったカクつきがなめらかに、軽くなりました。
IE11は position: sticky
に対応していないため追尾しなくなりました。また、追尾サイドバーの先祖要素に overflow: hidden
な要素がある場合も追尾しなくなりますので、カスタマイズの際はご注意ください。
ブログカードカスタマイズ用のフックを追加
snow_monkey_oembed_blog_card_block_editor_template
エディター上に表示されるブログカードの HTML をカスタマイズできます。
/**
* @param string $template
* @param string $url
* @return string
*/
add_filter(
'snow_monkey_oembed_blog_card_block_editor_template',
function( $template, $url ) {
return $template;
},
10,
2
);
snow_monkey_oembed_blog_card_loading_template
ブログカードは、表示のたびに参照先ページの情報を取得すると速度がおそくなったり参照先ページに負荷をかけることになるため、一度取得した情報を一定時間キャッシュするようになっています。
キャッシュの有効期限が切れた場合に表示されるブログカードの HTML をカスタマイズできます。
※ただし、.js-wp-oembed-blog-card
、.js-wp-oembed-blog-card__link
がないと正しく動作しない場合があるので注意してください。
/**
* @param string $template
* @param string $url
* @return string
*/
add_filter(
'snow_monkey_oembed_blog_card_loading_template',
function( $template, $url ) {
ob_start();
?>
<div class="js-wp-oembed-blog-card">
<a class="js-wp-oembed-blog-card__link" href="%1$s" target="%2$s">%1$s</a>
</div>
<?php
return ob_get_clean();
},
10,
2
);
snow_monkey_oembed_blog_card_url_template
参照先ページから正しく情報が取得できなかった場合に表示されるブログカードの HTML をカスタマイズできます。
/**
* @param string $template
* @param string $url
* @return string
*/
add_filter(
'snow_monkey_oembed_blog_card_url_template',
function( $template, $url ) {
return $template;
},
10,
2
);
snow_monkey_oembed_blog_card_template
ブログカードの HTML をカスタマイズできます。
/**
* @param string $template
* @param array $cache
* @return string
*/
add_filter(
'snow_monkey_oembed_blog_card_template',
function( $template, $cache ) {
return $template;
},
10,
2
);
Snow Monkey オリジナルウィジェットカスタマイズ用のフックを追加
Snow Monkey に搭載されている「WPAW: xxxxx」のウィジェットのカスタマイズをおこなうためのフックを追加しました。
snow_monkey_wp_awesome_widgets_view_hierarchy
ウィジェットのテンプレートを格納するテンプレートルートを追加します。ウィジェットのテンプレートを読み込むときに、$hierarchy
を上から順に探索していき、見つかったテンプレートが使用されます。
/**
* @param array $hierarchy
* @param string $slug e.g. slider, recent-posts, etc...
* @param null $name
* @param array $vars
*/
add_filter(
'snow_monkey_wp_awesome_widgets_view_hierarchy',
function( $hierarchy, $slug, $name, $vars ) {
return array_merge(
[ __DIR__ . '/templates' ],
$hierarchy
);
},
10,
4
);
snow_monkey_wp_awesome_widgets_view_args
/**
* @param array $args
* @var string $slug
* @var string $name
* @var array $vars
* @param array
*/
add_filter(
'snow_monkey_wp_awesome_widgets_view_args',
function( $args ) {
return $args;
}
);
snow_monkey_wp_awesome_widgets_view_<slug>
ウィジェットの HTML を関数内で定義できます。
/**
* @param string $name
* @param array $vars
*/
add_action(
'snow_monkey_wp_awesome_widgets_view_ <slug>',
function( $name, $vars ) {
?>
HTML
<?php
},
10,
2
);
snow_monkey_wp_awesome_widgets_view_<slug>-<name>
/**
* @param array $vars
*/
add_action(
'snow_monkey_wp_awesome_widgets_view_ <slug>-<name>',
function( $vars ) {
?>
HTML
<?php
}
);
snow_monkey_wp_awesome_widgets_view_render
ウィジェットの HTML をカスタマイズできます。
/**
* @param string $html
* @param string $slug
* @param string $name
* @param array $vars
* @return string
*/
add_filter(
'snow_monkey_wp_awesome_widgets_view_render',
function( $html, $slug, $name, $vars ) {
return $html;
},
10,
4
);
フック名の変更
フックの命名規則を統一させるために、下記のフック名についてリネームをおこないました。古い名称のフックを使用している場合は、新しい名称のフックに書き換えをおこなってください。
inc2734_view_controller_config_path
フィルターフックをinc2734_wp_view_controller_config_path
にリネームinc2734_view_controller_get_template_part_<slug>-<name>
アクションフックをinc2734_wp_view_controller_get_template_part_<slug>-<name>
にリネームinc2734_view_controller_get_template_part_<slug>
アクションフックをinc2734_wp_view_controller_get_template_part_<slug>
にリネームinc2734_view_controller_template_part_render
フィルターフックをinc2734_wp_view_controller_template_part_render
にリネームinc2734_view_controller_get_template_part_args
フィルターフックをinc2734_wp_view_controller_get_template_part_args
にリネームinc2734_view_controller_get_template_part_pre_render
アクションフックをinc2734_wp_view_controller_get_template_part_pre_render
にリネームinc2734_view_controller_get_template_part_post_render
アクションフックをinc2734_wp_view_controller_get_template_part_post_render
にリネームinc2734_view_controller_template_part_root
フィルターフックを廃止inc2734_view_controller_template_part_root_hierarchy
フィルターフックをinc2734_wp_view_controller_template_part_root_hierarchy
にリネームinc2734_view_controller_located_template_slug_fallback
フィルターフックをinc2734_wp_view_controller_located_template_slug_fallback
にリネームinc2734_view_controller_config
フィルターフックをinc2734_wp_view_controller_config
にリネーム