私は最初にセージフォーラム here に投稿しました。
プラグインを機能させようとしていますが、機能していません。これは非常に一般的なNamespace問題であり、実際のプラグインではないように感じます。ここで成功を見つけてください。
プラグイン(およびコード/レポ)は次のとおりです: https://github.com/ItinerisLtd/acf-gutenblocks
このエラーを解決する方法はありますか?
Fatal error: Uncaught Error: Class 'Itineris\AcfGutenblocks\Plugin' not found in /app/public/wp-content/plugins/acf-gutenblocks/acf-gutenblocks.php:32
Stack trace:
#0 /app/public/wp-includes/class-wp-hook.php(286): Itineris\AcfGutenblocks\{closure}('')
#1 /app/public/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array)
#2 /app/public/wp-includes/plugin.php(465): WP_Hook->do_action(Array)
#3 /app/public/wp-content/plugins/advanced-custom-fields-pro/acf.php(334): do_action('acf/init')
#4 /app/public/wp-includes/class-wp-hook.php(286): ACF->init('')
#5 /app/public/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters(NULL, Array)
#6 /app/public/wp-includes/plugin.php(465): WP_Hook->do_action(Array)
#7 /app/public/wp-settings.php(525): do_action('init')
#8 /app/public/wp-config.php(76): require_once('/app/public/wp-...')
#9 /app/public/wp-load.php(37): require_once('/app/public/wp-...')
#10 /app/public/wp-blog-header.php(13): require_once('/app/public/wp-...')
#11 /app/public/index.php(17): require('/app in /app/public/wp-content/plugins/acf-gutenblocks/acf-gutenblocks.php on line 32
次のコードをsetup.php
に挿入します。
add_filter('acf_gutenblocks/blocks', function (array $blocks): array {
$new_blocks = [
Testimonial::class,
];
return array_merge($blocks, $new_blocks);
});
上記のコードを削除すると、アプリケーションは正常に動作します。
app
がwp-content/themes/[themename]/app
にある私のファイル構造:
app
-- Blocks
-- -- Testimonial
-- -- -- views
-- -- -- -- frontend.php
-- -- -- Testimonial.php
-- setup.php
私のsetup.phpには次のコードがあります:
ここにmy currentコードを含むGistへのリンク(setup.php、Testimonial.php、Frontend.php)
また、protected function registerFields(): array {}
をTestimonial.php
の下部に配置していることにも気づくでしょう。
セットアップ名前空間について、さまざまなバリエーションを試しました:use Blocks\Testimonial\Testimonial;
use app\blocks\testimonial\testimonial;
(小文字のファイル名も使用)
編集これまでに得た最良のアイデアは、プラグイン(composer require itinerisltd/acf-gutenblocks
)をディレクトリsitename/app/public/wp-content/plugins/
にインストールし、おそらくSage内のファイルにインストールしたことですテーマは名前空間を取得していません。メインのWordPressプラグインに含まれているためです。
ルートのセージテーマcomposer.json
で、オートロードがクラスを検索できるランタイムを指定する必要があります。
"autoload": {
"psr-4": {
"App\\": "app/",
"App\\Blocks\\": "app/Blocks/",
"Itineris\\AcfGutenblocks\\": "../../plugins/acf-gutenblocks/src/",
}
}
composer dump-autoload
を実行することを忘れないでください