WordPress

wtyczki – niestandardowy blok WordPress: Link zapisany w bazie danych nie został pobrany podczas edycji postu

  • 19 maja, 2023
  • 3 min read
wtyczki – niestandardowy blok WordPress: Link zapisany w bazie danych nie został pobrany podczas edycji postu


Tworzę mój pierwszy niestandardowy blok dla wordpress, który musi dodać dwa przyciski i muszę wstawić link do dwóch przycisków. Ale po zaktualizowaniu posta link jest zapisywany, jednak jeśli ponownie wchodzę do posta, aby edytować, link wydaje się pusty, nie pobiera linku zapisanego w bazie danych. Zobacz mój kod edit.js

import { __ } from '@wordpress/i18n';

import { useBlockProps, URLInputButton } from '@wordpress/block-editor';
import { registerBlockType } from '@wordpress/blocks';

import './editor.scss';

registerBlockType( 'my-custom-block', {
    // ...
    attributes: {
        link1: {
            type: 'string',
            source: 'attribute',
            attribute: 'href',
            selector: '.btn-afil-text-card a:first-child'
        },
        link2: {
            type: 'string',
            source: 'attribute',
            attribute: 'href',
            selector: '.btn-afil-text-card a:last-child'
        }
    },
    

} );

export default function Edit({ attributes, setAttributes }) {

    return (

            <div { ...useBlockProps() }>
  <div className="card-afil">
    <div className="btn-afil">
      <span className="btn-afil-img">
        <img src=" />
      </span>
      <span className="btn-afil-text-card">
        <URLInputButton
          url={attributes.link1} // Assumes you have 'link1' attribute defined in attributes
          onChange={(link1) => setAttributes({  link1:link1 })}
        />
      </span>
    </div>

    <div className="btn-afil">
      <span className="btn-afil-img">
        <img src=" />
      </span>
      <span className="btn-afil-text-card">
        <URLInputButton
          url={attributes.link2} // Assumes you have 'link2' attribute defined in attributes
          onChange={(link2) => setAttributes({  link2:link2 })}
        />
      </span>
    </div>
  </div>
</div>

            
    );
}


I mój kod w save.js

import { useBlockProps } from '@wordpress/block-editor';
import { registerBlockType } from '@wordpress/blocks';

registerBlockType( 'my-custom-block', {
    // ...
    attributes: {
        link1: {
            type: 'string',
            source: 'attribute',
            attribute: 'href',
            selector: '.btn-afil-text-card a:first-child'
        },
        link2: {
            type: 'string',
            source: 'attribute',
            attribute: 'href',
            selector: '.btn-afil-text-card a:last-child'
        }
    },
    // ...
} );

export default function save({ attributes }) {

    const { link1, link2 } = attributes;

    return (
        
            <div>
              <div className="card-afil">
                <div className="btn-afil">
                  <span className="btn-afil-img">
                    <img src=" />
                  </span>
                  <span className="btn-afil-text-card">
                    <a href={link1} className="btn-afil-text">Ver Preço</a>
                  </span>
                </div>
            
                <div className="btn-afil">
                  <span className="btn-afil-img">
                    <img src=" />
                  </span>
                  <span className="btn-afil-text-card">
                    <a href={link2} className="btn-afil-text">Ver Preço</a>
                  </span>
                </div>
              </div>
            </div>
        
    );
}

Podsumowując, jeśli zapiszę link i opublikuję go, podczas otwierania postu zapisane linki pojawiają się normalnie. Ale jeśli muszę edytować takie linki i przejść do edycji postu, linki wydają się puste. Jeśli wstawię nowy link, aktualizuje się poprawnie. Ale muszę edytować link już zapisany wcześniej, ponieważ sposób, w jaki jest, może zmylić redaktorów.

Warto przeczytać!  php — Wyświetla powrót punktu końcowego do pliku (file_put_contents())

Czy ktoś może mi pomóc to rozwiązać?


Źródło