WordPress 6.7 Es wurde eine neue Funktion eingeführt, die es Plugins ermöglicht, die Registrierung ihrer Blöcke zu erhöhen.wp_register_block_metadata_collection()
Typleistung, insbesondere für Plugins, die mehrere Blocktypen registrieren.
Erweiterung der WordPress Core-Verhaltensweisen auf Plugins
Seit WordPress 6.1 verfügt WordPress Core über einen Mechanismus zur Verbesserung der Leistung beim Laden aller eingebauten Blocktypen: Als Teil des Build-Prozesses werden einzelneblock.json
Die Datei wird geparst alsblocks-json.php
Datei, die alle ihre Daten als Array zurückgibt.Erhebliche Verbesserung der Leistung, da bei jeder WordPress-Anfrage nicht mehr viele teure Dateisystem- und JSON-Anfragen durchgeführt werden müssenBetrieb. Hintergrundinformationen zu den ursprünglichen Änderungen finden Sie in der#55005.
Die Art und Weise, wie dieser Mechanismus implementiert ist, gilt jedoch nur für WordPress Core selbst. Bislang konnten Plugins nicht die gleichen Vorteile nutzen. Insbesondere für Plugins, die selbst viele Blocktypen enthalten, bedeutet dies effektiv einen Leistungsverlust. Das wird sich in WordPress 6.7 ändern.
Sammlung registrierter Block-Metadaten
Das Plugin registriert jetzt optional PHP "Liste der Artikel"Datei, die alle Metadaten für den jeweiligen Blocktyp enthält. Für jeden Blocktyp, der registriert wird, prüft WordPress Core nun, ob eine Manifestdatei existiert, die diesen Blocktyp abdeckt, und wenn dies der Fall ist, werden die Daten in der Manifestdatei anstelle derblock.json
Lesen und analysieren Sie Blocktyp-Dateien direkt.
Um diese neue Funktion nutzen zu können, müssen Plugin-Entwickler das neuewp_register_block_metadata_collection()
Funktion, die zwei Argumente benötigt:
$pfad
: Der Basispfad, in dem sich die Blockdateien der Sammlung befinden.$manifest
Pfad zur Manifestdatei für die Sammlung.
jederblock.json
Die Dokumente, die in der Sammlung enthalten sein sollen, müssen sich alle in der angegebenen$pfad
in einem eigenen Verzeichnis, das dem Namen des Blocktyps entspricht (ohne den Block-Namensraum).
zur Kenntnis nehmenDie Registrierung einer Sammlung von Block-Metadaten ersetzt nicht die Notwendigkeit, einzelne Blocktypen zu registrieren. Es ist immer noch notwendig, dieregister_block_type()
vielleichtregister_block_type_from_metadata()
. Die Verwendung der neuen Funktion ist optional, um die Leistung zu verbessern, aber es wird dringend empfohlen, diese Funktion zu verwenden, insbesondere für Plugins, die mehrere Blocktypen registrieren.
Automatische Erstellung von Sammellisten für Block-Metadaten
Plugin-Entwickler sind für die Erstellung und Pflege der Manifestdateien verantwortlich, die sie für die Blocktyp-Metadatensammlungen des Plugins registrieren. Um diesen Prozess zu vereinfachen, hat die Gemeinschaft dasNPM-PaketDie Einführung eines neuenBefehlbuild-blocks-manifest
Dieser Befehl wurde als Teil der Version 30.3.0 veröffentlicht.@wordpress/scripts
solltewp-scripts build-blocks-manifest
Der Befehl akzeptiert zwei Parameter:
--Eingabe
Verzeichnis: Das Verzeichnis, in dem sich der Blocktyp befindet. Der Standardwert ist "build".--output
Der Pfad zu der Datei, in der das Manifest der Build-Block-Metadatensammlung gespeichert ist. Der Standardwert ist "build/blocks-manifest.php".
Die Parameter dieses Befehls entsprechen nämlich den Parametern des Befehlswp_register_block_metadata_collection()
::--Eingabe
Parameter sind äquivalent zu Parametern$pfad
(math.) Gattung--output
Parameter sind äquivalent zu Parametern$manifest
.
Vollständiges Beispiel
Nehmen wir für dieses Beispiel an, Sie haben einemy-block-library
Registrierte Plug-ins für 3 Blocktypen:
my-block-library/pricing
my-block-library/services
my-block-library/testimonial
Der Quellcode für diese Blocktypen ist im Verzeichnis des Plugins implementiertsrc
, genauer gesagt im folgenden Katalog:
src/preisgestaltung
Verwendung fürmy-block-library/pricing
Blöcke.src/Dienste
Verwendung fürmy-block-library/services
Blöcke.src/testimonial
Verwendung fürmy-block-library/testimonial
Blöcke.
Durch die Verwendung bestehenderwp-scripts bauen
Befehl, wird der Code in die Plugin-Dateibauen
Verzeichnis, und jeder Blocktyp hat das gleiche Unterverzeichnis.
Nachdem Sie den Build ausgeführt haben, können Sie die neuewp-scripts build-blocks-manifest
Befehl. Da das Plugin den Standardspeicherort seines Blocktyps verwendet, müssen Sie dem Befehl keine Parameter übergeben. Führen Sie einfach denwp-scripts build-blocks-manifest
Es wirdblock.json
Metadaten für alle drei Blöcke aus dem Katalog lesenbauen
und fügen Sie sie zu einembuild/blocks-manifest.php
Dokumentation.
Die Manifestdatei sieht wie folgt aus:
array( /* Metadaten blockieren. */ ), 'testimonial' => array( /* Metadaten blockieren.
'testimonial' => array( /* Metadaten blockieren. */ ), 'testimonial' => array( /* Metadaten blockieren. */ )
).
In Zukunft können Sie die gleichen beiden Befehle verwenden, wenn Sie Änderungen am Blocktyp und seiner Implementierung vornehmen:
wp-scripts bauen
wp-scripts build-blocks-manifest
Nachdem Sie die Manifestdatei erstellt haben, können Sie nun die Block-Metadatensammlung registrieren, wie unten gezeigt:
wp_register_block_metadata_collection(
wp_plugin_dir . '/my-block-library/build',
wp_plugin_dir . '/meine-block-bibliothek/build/blocks-manifest.php'
);
Ein letzter wichtiger Punkt: Vergessen Sie nicht, den eigentlichen Blocktyp zu registrieren:
register_block_type_from_metadata( WP_PLUGIN_DIR . '/my-block-library/build/pricing' ).
register_block_type_from_metadata( WP_PLUGIN_DIR . '/my-block-library/build/services' ); register_block_type_from_metadata( WP_PLUGIN_DIR .
register_block_type_from_metadata( WP_PLUGIN_DIR . '/my-block-library/build/testimonial' ); register_block_type_from_metadata( WP_PLUGIN_DIR .
Zusammenfassungen
neue Funktionwp_register_block_metadata_collection()
und seine Werkzeugunterstützung@wordpress/scripts
sind eine leistungsstarke Kombination zur Verbesserung der Leistung von Plugin-Registrierungsblocktypen. Sie machen den Prozess leicht und einfach. Wenn also Plugins Blocktypen registrieren, sollten Sie in Erwägung ziehen, diesen Ansatz in Ihren Entwicklungsworkflow und Ihre Plugin-Codebasis zu integrieren.