-
投稿者投稿
-
2024年3月4日 9:36 AM #136873
Snow Monkey Blocksのカスタムフィールドブロックに日付の表示形式を指定する機能が欲しいです。
現在(バージョン: 20.4.3)はブロックの設定で「カスタムフィールド名」しか設定項目がなく、登録されている値をそのまま出力するブロックとして作られていると思います。(勘違いでしたら申し訳ありません)
ですが、日付フィールドを以下のように使用したいケースがあります。
例えば、建設会社のWebサイトに載せる工事施工実績の竣工年月などです。- ページに値を表示する際は「yy年mm月」のように年月のみ表示する
- 表示順ソート等の内部処理には年月日を用いる
このような場合、DBには日付データを保存して、表示の際に年月へ変換を行うのが一般的だと思います。
私のサイトではページのテンプレートを変更して作っているためこの機能はすぐに必要ではありませんが、ブロックのみでも同じように作れればプログラムがわからない方でもページレイアウトが修正できるようになるので、もしあれば将来使いたくなりそうです。
また、日付以外にも、数値フィールドに金額を入れてコンマ区切りで表示したい場合などもありそうです。
カスタムフィールドブロックの表示形式の指定機能、ご検討いただければ幸いです。
♥ 0Who liked: No user2024年3月4日 11:06 AM #136882カスタムフィールドにはどのようなデータでも保存できるので、Snow Monkey Blocks のカスタムフィールドブロックでは表示したいカスタムフィールドの指定だけをして、シンプルにそれを出力する、という仕様にしています。
確かにフォーマットを選択できる UI があれば便利かなとは思いますが、あらゆるフォーマットを追加し続けないといけなくなりそうなので、どういう UI が適切か(または僕の技術力的に可能なのか)が難しいかなと感じます。
一応フィルターフックが通るようにはしているので、コードを書けば好きなフォーマットで出力することは可能です。
add_filter( 'snow_monkey_blocks_custom_field_value_カスタムフィールド名', function( $value, $post_id ) { return $value; // ここで好きなフォーマットに変換して返す } );
2024年3月4日 2:40 PM #136905返信ありがとうございます。
確かに汎用的なブロックで対応するのは難しそうですね…。でも、フックを用意していただけていたんですね。
ローカル環境でフィルターフックを試してみようと思ったのですが、
以下のコードのfunction( $value, $post_id ){の行でエラーが発生してしまいます。
カスタムフィールド名の部分を置き換えただけのつもりでしたが、何が原因でしょうか?my-snow-monkey.php(一部)
add_filter( 'snow_monkey_blocks_custom_field_value_completion', function( $value, $post_id ) { return $value; // ここで好きなフォーマットに変換して返す } );
エラーとスタックトレース
Fatal error: Uncaught ArgumentCountError: Too few arguments to function {closure}(), 1 passed in C:\....\app\public\wp-includes\class-wp-hook.php on line 326 and exactly 2 expected in C:\....\app\public\wp-content\plugins\my-snow-monkey\my-snow-monkey.php:374 Stack trace: #0 C:\....\app\public\wp-includes\class-wp-hook.php(326): {closure}('2024-03-04') #1 C:\....\app\public\wp-includes\plugin.php(205): WP_Hook->apply_filters('2024-03-04', Array) #2 C:\....\app\public\wp-content\plugins\snow-monkey-blocks\dist\blocks\custom-field\view.php(20): apply_filters('snow_monkey_blo...', '2024-03-04', 1153) #3 C:\....\app\public\wp-content\plugins\snow-monkey-blocks\App\DynamicBlocks.php(32): include('C:\\Users\\...') #4 C:\....\app\public\wp-content\plugins\snow-monkey-blocks\dist\blocks\custom-field\index.php(22): Snow_Monkey\Plugin\Blocks\App\DynamicBlocks::render('custom-field', Array, '', Object(WP_Block)) #5 C:\....\app\public\wp-includes\class-wp-block.php(258): Snow_Monkey\Plugin\Blocks\Bootstrap->{closure}(Array, '', Object(WP_Block)) #6 C:\....\app\public\wp-includes\class-wp-block.php(244): WP_Block->render() #7 C:\....\app\public\wp-includes\class-wp-block.php(244): WP_Block->render() #8 C:\....\app\public\wp-includes\class-wp-block.php(244): WP_Block->render() #9 C:\....\app\public\wp-includes\class-wp-block.php(244): WP_Block->render() #10 C:\....\app\public\wp-includes\blocks.php(1484): WP_Block->render() #11 C:\....\app\public\wp-includes\blocks.php(1522): render_block(Array) #12 C:\....\app\public\wp-includes\class-wp-hook.php(324): do_blocks('<!-- wp:snow-mo...') #13 C:\....\app\public\wp-includes\plugin.php(205): WP_Hook->apply_filters('<!-- wp:snow-mo...', Array) #14 C:\....\app\public\wp-includes\post-template.php(256): apply_filters('the_content', '<!-- wp:snow-mo...') #15 C:\....\app\public\wp-content\themes\snow-monkey\template-parts\content\entry\content\content.php(17): the_content() #16 C:\....\app\public\wp-includes\template.php(792): require('C:\\Users\\...') #17 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(246): load_template('C:\\Users\\...', false, Array) #18 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Template_Part.php(69): Inc2734\WP_View_Controller\Helper::locate_template(Array, true, false, 'template-parts/...', 'works', Array) #19 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(294): Inc2734\WP_View_Controller\App\Template_Part::render('template-parts/...', 'works', Array) #20 C:\....\app\public\wp-content\themes\snow-monkey\template-parts\content\entry\entry.php(104): Framework\Helper::get_template_part('template-parts/...', 'works') #21 C:\....\app\public\wp-includes\template.php(792): require('C:\\Users\\...') #22 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(246): load_template('C:\\Users\\...', false, Array) #23 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Template_Part.php(69): Inc2734\WP_View_Controller\Helper::locate_template(Array, true, false, 'template-parts/...', 'works', Array) #24 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(294): Inc2734\WP_View_Controller\App\Template_Part::render('template-parts/...', 'works', Array) #25 C:\....\app\public\wp-content\themes\snow-monkey\templates\view\content.php(62): Framework\Helper::get_template_part('template-parts/...', 'works', Array) #26 C:\....\app\public\wp-includes\template.php(792): require('C:\\Users\\...') #27 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(220): load_template('C:\\Users\\...', false, Array) #28 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Template_Part.php(69): Inc2734\WP_View_Controller\Helper::locate_template(Array, true, false, 'templates/view/...', 'works', Array) #29 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(294): Inc2734\WP_View_Controller\App\Template_Part::render('templates/view/...', 'works', Array) #30 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\View.php(147): Inc2734\WP_View_Controller\Helper::get_template_part('templates/view/...', 'works') #31 C:\....\app\public\wp-content\themes\snow-monkey\templates\layout\wrapper\one-column.php(94): Inc2734\WP_View_Controller\App\View->view() #32 C:\....\app\public\wp-includes\template.php(792): require('C:\\Users\\...') #33 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(220): load_template('C:\\Users\\...', false, Array) #34 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Template_Part.php(69): Inc2734\WP_View_Controller\Helper::locate_template(Array, true, false, 'templates/layou...', '', Array) #35 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(294): Inc2734\WP_View_Controller\App\Template_Part::render('templates/layou...', '', Array) #36 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\Contract\Template_Tag.php(143): Inc2734\WP_View_Controller\Helper::get_template_part('templates/layou...', NULL, Array) #37 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\View.php(105): Inc2734\WP_View_Controller\Helper::get_wrapper_template('templates/layou...', Array) #38 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\View.php(79): Inc2734\WP_View_Controller\App\View->_render() #39 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\App\View.php(61): Inc2734\WP_View_Controller\App\View->_render_loop() #40 C:\....\app\public\wp-content\themes\snow-monkey\vendor\inc2734\wp-view-controller\src\Bootstrap.php(45): Inc2734\WP_View_Controller\App\View->render('content', 'works') #41 C:\....\app\public\wp-content\themes\snow-monkey\singular.php(25): Inc2734\WP_View_Controller\Bootstrap::render('content', 'works') #42 C:\....\app\public\wp-includes\template-loader.php(106): include('C:\\Users\\...') #43 C:\....\app\public\wp-blog-header.php(19): require_once('C:\\Users\\...') #44 C:\....\app\public\index.php(17): require('C:\\Users\\...') #45 {main} thrown in C:\....\app\public\wp-content\plugins\my-snow-monkey\my-snow-monkey.php on line 374
環境(Localを使用)
- WordPress のバージョン:6.4.3
- Snow Monkey のバージョン:25.3.3
Snow Monkey のバージョン:20.4.3 - 使用しているプラグイン:結構多いため、必要そうであれば後で貼ります。
- PHPのバージョン:8.1.23
- MySQL のバージョン:MariaDB 10.4.32
♥ 0Who liked: No user2024年3月4日 4:14 PM #1369082024年3月4日 5:20 PM #1369162024年3月5日 4:16 PM #136950ブロックに用意されているフィルターフックの一覧表などはあるのでしょうか。
ある程度はこの公式サイトのお知らせ記事に書いているとは思いますが、まとまっているものはありません…すみません。
/wp-content/plugins/snow-monkey-blocks
を VS Code 等で開いて、apply_filters
で全文検索するのが確実ではあります。Snow Monkey テーマのフックについては GitHub の wiki にまとめていますが、こちらももしかしたら漏れがあるかもしれないので、VS Code 等で全文検索するのが確実だとは思います…。
2024年3月6日 8:26 AM #136959 -
投稿者投稿
- トピック「Snow Monkey Blocksのカスタムフィールドブロックに日付の表示形式を指定する機能が欲しい」には新しい返信をつけることはできません。