WordPress

Sprawdzanie poprawności bloku: sprawdzanie poprawności bloku nie powiodło się — niestandardowy blok WordPress Gutenberg kończy się niepowodzeniem w edytorze po ponownym załadowaniu

  • 20 marca, 2023
  • 3 min read
Sprawdzanie poprawności bloku: sprawdzanie poprawności bloku nie powiodło się — niestandardowy blok WordPress Gutenberg kończy się niepowodzeniem w edytorze po ponownym załadowaniu


Jestem bardzo nowy w WordPress i jestem bardzo nowy w Gutenberg Blocks. Stworzyłem kilka prostych bloków za pomocą generatora npm Gutenburg. W moim pliku package.json utworzyłem następujące atrybuty w moim pliku package.json

"attributes": {
    "quote": {
      "type": "string"
    },
    "source": {
      "type": "string"
    }
  }

W moim pliku edit.js mam następującą strukturę bloków

export default function Edit(props) {
    return (
            <div { ...useBlockProps() } className="testimonial">
                <div className="testimonial__wrapper">
                    <div className="testimonial__header">
                        <i className="testimonial__quote__left"></i>
                            <RichText
                                tagName="blockquote"
                                value={props.attributes.quote}
                                onChange={(content) => props.setAttributes({ quote: content })}
                                placeholder="Enter Quote"
                                keepPlaceholderOnFocus={true}
                            />
                        <i className="testimonial__quote__right"></i>
                            <RichText
                                tagName="figcaption"
                                value={props.attributes.source}
                                onChange={(content) => props.setAttributes({source: content })}
                                placeholder="Enter Quotee / Source"
                                keepPlaceholderOnFocus={true}
                            />
                    </div>
                </div>
            </div>
    );
}

a to jest moja funkcja zapisu w pliku save.js

export default function save(props) {
    return (
        <div className="testimonial">
            <div className="testimonial__wrapper">
                <div className="testimonial__header">
                    <i className="testimonial__quote__left"></i>
                    <RichText.Content tagName="blockquote" value={ props.attributes.quote } />
                    <i className="testimonial__quote__right"></i>
                    <RichText.Content tagName="figcaption" value={ props.attributes.source } />
                </div>
            </div>
        </div>
    );
}

Kiedy dodaję mój niestandardowy blok do edytora, działa świetnie. Czy powinienem zaktualizować, a następnie wyświetlić moją stronę zawierającą blok, który działa! Jeśli jednak odświeżę lub przeładuję edytor zawierający mój blok, pojawi się następujący błąd:

Block validation: Block validation failed for `create-block/einzweidinge-testimonial` ({name: 'create-block/einzweidinge-testimonial', icon: {…}, keywords: Array(0), attributes: {…}, providesContext: {…}, …}).

Content generated by `save` function:

<div class="testimonial"><div class="testimonial__wrapper"><div class="testimonial__header"><i class="testimonial__quote__left"></i><blockquote></blockquote><i class="testimonial__quote__right"></i><figcaption></figcaption></div></div></div>

Content retrieved from post body:

<div class="testimonial"><div class="testimonial__wrapper"><div class="testimonial__header"><i class="testimonial__quote__left"></i><blockquote>ffff</blockquote><i class="testimonial__quote__right"></i><figcaption>fffff</figcaption></div></div></div>

Zauważyłem, że jeśli dodam blok i nie wprowadzę żadnych danych do komponentów RichText, błąd sprawdzania poprawności nie zostanie zgłoszony! Nie jestem pewien, czy to pomoże rozwiązać problem, ale widzę też następujące ostrzeżenie w konsoli.

blocks.min.js?ver=69022aed79bfd45b3b1d:10 Block validation: Expected token of type `EndTag` ({type: 'EndTag', tagName: 'blockquote'}), instead saw `Chars` ({type: 'Chars', chars: 'ffff'}).

Jestem tu zakłopotany i nie jestem pewien, co robię źle? Zaglądam do tego od kilku godzin! Każda pomoc lub wskazówki będą mile widziane.

Warto przeczytać!  jquery - Rhyzz Repeatable-fields javascript w php i wordpress


Źródło