Luxeritas 3.21.0 リリース
Luxeritas Theme 3.21.0 をリリースしました。
オプション機能の追加(2点)、CSS 削減(古いベンダープレフィクス削除)、その他仕様変更等もろもろ。
詳しい改訂内容については、開発者ブログの記事をお読みください。
改訂履歴
機能拡張
- グローバルナビの各アイテムに説明文を付加できる機能拡張、合わせてその説明文の文字色を変更できる機能拡張
- CSS で Bootstrap 5 モードを選択できる機能拡張
仕様変更
- いくつかの例外を除いて CSS の古いベンダープレフィクス廃止(WordPress 本体がサポートしなくなったものの大半を廃止。CSS 削減)
- 最初のアクセス時には(スマホ・モバイル用の)ハンバーガーメニューをアニメーションしないようにした(CLS 対策)
- スマホ・モバイル表示サイズでのグローバルメニュー hover アクションは無しに変更(邪魔くさいので)
- ブログ画面左下の管理バーにある「構造化データ」ボタンのリンク先 URL 変更(Google の構造化データテストツールが Schema.org の検証ツールに移行したため)
- 構造化データの Article -> Person に url 追加(リッチリザルトテストで URL がない趣旨の警告が出るようになったため)
不具合修正
- グローバルナビの「ナビカレント背景色」が設定されてないと「ナビカレント文字色」の値が反映されない不具合修正
- 管理者でログインしてる状態で AMP ページにアクセスすると、一箇所だけ Notice が出てしまう部分があったので修正
ディスカッション
コメント一覧
お世話になります。
検索プラグインを検証中で、動作させようとすると、
Fatal error: Uncaught Error: Call to undefined function thk_search_highlight_inline_style() in
というエラーが出てしまいます。
関数が存在しない旨のメッセージかと思いますが、解決・回避方法はがあれば、ご教示いただきたく、ご質問させて頂きました。
エラーが出るファイル(luxeritas/inc/load-inline.php)の先頭行に、
require_once “search-func.php”;
を入れてあげると、動作したのですが、このような対応方法で問題ないでしょうか?
ご回答いただけますと幸いです。
よろしくお願いいたします。
きらそんさん。
search-func.php は is_main_query() が true でないと読み込まれないので、その検索プラグインはメインクエリを使ってないってことですかね。
メインクエリを使わずに is_search() が true になる状況は想定してなかったです。
luxeritas/functions.php の 280行目にある
↓ これを
add_action( 'pre_get_posts', function( $q ) { if( $q->is_admin === false && $q->is_main_query() === true ) {↓ こう書き換えて
add_action( 'pre_get_posts', function( $q ) { if( $q->is_search === true ) { get_template_part( 'inc/search-func' ); thk_search_extend(); } if( $q->is_admin === false && $q->is_main_query() === true ) {288行目にある
↓ これを消してみて下さい
迅速なご対応、ありがとうございます。
> その検索プラグインはメインクエリを使ってないってことですかね。
今回エラーとなった操作は、検索プラグインの管理画面から行なっているため、通常の検索とは異なる特殊な状況なのかもしれません。
教えて頂いたコードを書いて試したのですが、状況変わらず同じエラーとなりました。
そこで、
if( $q->is_search === true ) {
}
上のif文の外に、次の2行(またはget_template_partの1行だけ)を書いてみると、エラーが解消します。
get_template_part( ‘inc/search-func’ );
thk_search_extend();
if( $q->is_search === true ) {
}
の外に書いても大きな影響が出ないようでしたら、このようにすることも考えたいと思います。
恐れ入りますが、ご意見を頂けますと幸いです。
きらそんさん。
条件分岐しないと、検索画面以外の全ページで無駄なリクエストが発生する上に、検索ページ以外では全く意味のない thk_search_extend() 関数その他もろもろ処理が動くんで、条件は(絶対に)入れた方がいいです。
thk_search_highlight_inline_style() が undefined function ということは
・$_is[‘search’] は true
・$_is[‘search’] が true ならば is_search() も必ず true
のはず。$q->is_search だけ false ってことなんですかね?
試しに
if( is_search() === true ) {だと、どうなるか見てもらえますか。
あと気になるのは「管理画面」からってのは WordPress にログインした管理画面ってことですか?
だとすると、
if( $q->is_search === true || $q->is_admin === true ) {の場合も試してみて欲しいです。
プラグインの名前も教えてください。名前が分からないため、推測でしか回答できないんで。
ご回答いただきありがとうございます。
また、条件必須とのことを教えて頂きありがとうございました。
> あと気になるのは「管理画面」からってのは WordPress にログインした管理画面ってことですか?
はい、WordPressにログインした管理画面からの操作となります。
> プラグインの名前も教えてください。
「FE Advanced Search」という有料のプラグインです。
以下で動作しました!
if( is_search() === true ) {
以下の場合は、同じエラーが出力されました。
if( $q->is_search === true || $q->is_admin === true ) {
度々恐縮ですが、ご意見いただけますでしょうか。
よろしくお願いいたします。
きらそんさん。
is_search() の呼び出し回数は減らした方がいいので、
・functions.php の pre_get_posts 以下
add_action( 'pre_get_posts', function( $q ) { global $_is; $_is['search'] = is_search(); if( $_is['search'] === true ) { get_template_part( 'inc/search-func' ); thk_search_extend(); } if( $q->is_admin === false && $q->is_main_query() === true ) { global $luxe; if( $q->is_search === true ) { if( isset( $luxe['items_search'] ) && isset( $luxe['items_search_num'] ) ) { $q->set( 'posts_per_page', $luxe['items_search_num'] ); } } elseif( $q->is_home === true || $q->is_category === true || $q->is_archive === true ) {・search-func.php の冒頭にある thk_search_extend()
if( function_exists( 'thk_search_extend' ) === false ): function thk_search_extend() { global $luxe; thk_default_set(); add_action( 'posts_request', function( $query ) {こんな感じですかね。
次のバージョンでこれと同じか、これに近しい形で修正しときます。
ご丁寧にご対応頂き、また呼び出し回数に配慮していただき、ありがとうございます。
また、次のバージョンアップで対応して頂けるとのこと、感謝致します。
ご提示頂いた方法で動作を確認できましたので、このまま進めさせて頂き、
次のバージョンアップがリリースされましたら、適用させて頂きます。
この度は誠にありがとうございました。
お世話になります。
このバージョン以降で、ナビゲーションのカテゴリの説明文が(私のブログでの「園芸」)どのページに行っても表示されるようになりました(ブログをご覧ください)。一つ前のバージョンに戻すと問題ありません。
また、グローバルナビゲーションにおいて、「仕事」カテゴリの記事の場合、関係がない「私について」ハイライトされます。
https://www.asanao.com/7661.html
ナビゲーションまわりの不具合と考えられますが、ご確認いただけませんでしょうか。お手数おかけしますが、よろしくお願いします。
Asanao さん。
> ナビゲーションのカテゴリの説明文が(私のブログでの「園芸」)~
これは、こちらの質問と同じです。
ver3.21.0 からメニューで説明文が使えるようになってますが、既存のカテゴリメニューにはカテゴリの説明文が自動的にコピー入力されてしまいます。
「外観 -> メニュー」の説明文を消してください。メニューの説明を消しても単なるコピーなので、カテゴリの説明文はそのまま残ります。
> 「仕事」カテゴリの記事の場合、関係がない「私について」~
すみません。これはバグです。
luxeritas/inc/navi-menu-walker.php の 66行目付近にある以下の箇所を
foreach( (array)$classes as $key => $val ) { if( stripos( $val, 'menu-' ) === false && ( stripos( $val, 'page-' ) !== false || stripos( $val, 'page_' ) !== false ) ) { unset( $classes[$key] ); } }↓ 次のように書き換えてみてください。
foreach( (array)$classes as $key => $val ) { if( stripos( $val, 'menu-' ) === false && ( stripos( $val, 'page-' ) !== false || stripos( $val, 'page_' ) !== false ) ) { unset( $classes[$key] ); } if( stripos( $val, 'menu-' ) === false && ( stripos( $val, 'post-' ) !== false || stripos( $val, 'post_' ) !== false ) ) { unset( $classes[$key] ); } }次のバージョンで修正しておきます。
るな様
早速、ご教示いただき、ありがとうございます。問題は解消いたしました。今後とも、よろしくお願いします。
お世話になっております。
version3.21.0に更新したところ、グローバルナビの子メニューにカテゴリーページを指定した場合、カテゴリーの説明文も表示されるようになりました。
仕様なのかもですが、できれば以前の通りナビゲーションメニューにはカテゴリー説明文はないほうが見やすいかなと思い、元に戻す方法をご教示お願いしたいのですが。
ご検討のほど、よろしくお願い致します。
ウェブチルさん。
カテゴリの説明文がメニューの説明欄にコピーされて入力されてるだけです。
「外観 -> メニュー」の説明文を消してください。メニューの説明を消しても単なるコピーなので、カテゴリの説明文はそのまま残ります。
コピーされないようにしたいけど、両方ともオブジェクト名が description で同じになってるので、ちょっと難しいかなーと思ってます。
なんか良い方法が思いついたら、コピーされないようにしてみます。
メニューにカテゴリーの説明文が表示される件は解決しました。過去にカテゴリーの説明文に設定した文章が、なぜか自動的にメニューの説明欄(オプション)に入力されていたようです。こちらを編集すれば削除可能とわかりました。
申し訳ありませんでした。
コメントがかぶってしまいましたが、了解いたしました。
迅速なご回答ありがとうございました。
迅速な対応と丁寧なご返信ありがとうございます。こちら解決しました。
今後ともよろしくお願いします。ありがとうございました!
いつもお世話になっております。
管理者以外で編集画面に入ると「定型文の挿入が行えない」という不具合が発生しております。
いつから発生したかは正確にはわからないのですが、9月前半のバックアップから3.8.2にバージョンを戻したところこの不具合は解消されました(ずっとアップデートしていなかったためこの日に一気に3.20.2までバージョンアップした模様)
次に9月16日のバックアップからver3.20.2に戻してみたところやはり同じ不具合が発生しました。
そして最近の3.21にバージョンアップしてみても解決せず。
ルクセリタス固有の機能なので色々調べてみても原因がわからずです。どうしたらよろしいでしょうか?
APPLI さん。
ありがとうございます。確認しました。
luxeritas/inc/admin-func.php の 98行目付近にある ↓ これを消して
// ajax 処理 if( isset( $_POST ) ) { require( INC . 'admin-ajax.php' ); }luxeritas/function.php の 100行目付近にある ↓ この位置に移植してください。
if( $_is['edit_posts'] === true ) { if( stripos( $_SERVER['REQUEST_URI'], 'wp-admin/post' ) !== false ) { add_editor_style( 'editor-style.css' ); require( INC . 'admin-post-func.php' ); } // ajax 処理 if( isset( $_POST ) ) { require( INC . 'admin-ajax.php' ); } }次のバージョンで修正しておきます。