it-swarm.com.de

Überprüfen Sie, welche Gutenberg-Blöcke in post_content enthalten sind

Ich arbeite an einem Design mit einem anderen Stil, wenn ein bestimmter Gutenberg-Block auf einer Seite vorhanden ist. Mit anderen Worten, wenn es sich bei dem ersten Block um einen benutzerdefinierten Gutenberg-Block handelt, wird der post_title aufgrund der getroffenen Entwurfsentscheidungen an anderer Stelle gerendert.

Gibt es eine Funktion in WordPress, um eine Liste aller im post_content vorhandenen Gutenberg-Blöcke zu erhalten?

WordPress 5.0+ hat eine Funktion dafür: parse_blocks(). Um zu sehen, ob der erste Block im Beitrag der Überschriftenblock ist, gehen Sie folgendermaßen vor:

$post = get_post(); 

if ( has_blocks( $post->post_content ) ) {
    $blocks = parse_blocks( $post->post_content );

    if ( $blocks[0]['blockName'] === 'core/heading' ) {
    }
}
15
Jacob Peattie

Die Lösung, die ich zum Schreiben verwende, prüfe den post_content für die Gutenberg-HTML-Kommentare. Aufgrund zukünftiger Gutenberg-Änderungen könnte dies in Zukunft nicht funktionieren.

<?php    
$post_content = get_the_content( get_the_ID() ); // Get the post_content
preg_match_all('<!-- /wp:(.*?) -->', $post_content, $blocks); // Get all matches in between <!-- /wp: --> strings

// $blocks[1] contains the names of all the blocks present in the post_content
if ( in_array( 'heading', $blocks[1] ) ) {
    // Post content contains a wp:heading block
}
else {
    // Post content does not contain a wp:heading block
}

Seit der Veröffentlichung von 5.0 sind diese Funktionen veraltet, und Gutenberg ist jetzt in den Kern integriert. Ich stelle mir vor, habe aber nicht bestätigt, dass diese Funktionen im Gutenberg-Standalone-Plugin noch vorhanden sind.

Anstelle von gutenberg_content_has_blockshas_blocks verwenden

Anstelle von gutenberg_parse_blocksparse_blocks verwenden

0
ian-hoyte