{"id":229239,"date":"2022-10-20T19:54:00","date_gmt":"2022-10-20T16:54:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229239"},"modified":"2022-11-09T06:06:19","modified_gmt":"2022-11-09T03:06:19","slug":"formatta-il-contenuto-del-tuo-post-con-registerformattype","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/formatta-il-contenuto-del-tuo-post-con-registerformattype\/","title":{"rendered":"Formatta il contenuto del tuo post con registerFormatType"},"content":{"rendered":"\n<p>Puoi aggiungere pulsanti personalizzati alla barra degli strumenti in WordPress Gutenberg abbastanza facilmente, ma sapevi che puoi anche aggiungere controlli del tipo di formato al menu del formato?<\/p>\n<p>In questa guida vedremo come aggiungere un controllo di formato <code>registerFormatType<\/code>che ci permetter\u00e0 di scegliere il colore di evidenziazione del testo selezionato usando il <code>&lt;mark&gt;<\/code>tag HTML semantico.<\/p>\n<p>Tutto il codice utilizzato in questo tutorial pu\u00f2 essere trovato nel plugin <strong>gratuito<\/strong> <a href=\"https:\/\/wholesomecode.ltd\/plugins\/highlighter\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">&#8216;Evidenziatore&#8217;<\/a>.<\/p>\n<p>Vale la pena notare che non solo puoi applicare formati al testo selezionato all&#8217;interno dei tuoi blocchi, ma puoi anche usarli per inserire altri oggetti direttamente nei blocchi, come immagini e icone in linea.<\/p>\n<p>Applicazione di un tipo di formato utilizzando il plug-in Evidenziatore.<\/p>\n<p>Il video sopra mostra il plug-in Highlighter e il nostro tipo di formato in azione. Saltiamo ad esso.<\/p>\n<h2>Prerequisiti<\/h2>\n<ul>\n<li>Leggi la guida <a href=\"https:\/\/wholesomecode.ltd\/guides\/creating-plugin-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Creazione di un plug-in per l&#8217;editor di blocchi di WordPress (Gutenberg)<\/a> in modo da poter ottenere un vantaggio nella creazione del plug-in.<\/li>\n<li>Facoltativamente <a href=\"https:\/\/wholesomecode.ltd\/plugins\/highlighter\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">, scarica il plug-in &#8216;Evidenziatore&#8217; gratuito<\/a> e guarda il file<code>\/src\/formats\/highlight.js<\/code><\/li>\n<\/ul>\n<h2>Imposta i file plug-in<\/h2>\n<p>Se hai seguito il prerequisito e seguito la guida del plug-in, dobbiamo procedere e rimuovere un sacco di quei file.<\/p>\n<ul>\n<li>Nella cartella src rimuovi tutto tranne i file <code>index.js<\/code>e <code>style.scss<\/code>.<\/li>\n<li>Elimina il contenuto di <code>index.js<\/code>e <code>style.scss<\/code>completamente.<\/li>\n<li>Nella <code>\/build<\/code>cartella elimina tutti i file. Li rigenereremo pi\u00f9 tardi.<\/li>\n<li>Rimuovi <code>block.json<\/code>. Oggi non stiamo costruendo un blocco, quindi non ne abbiamo bisogno.<\/li>\n<\/ul>\n<h3>Accoda gli script<\/h3>\n<p>Nel file del plugin principale (<code>wholesome-plugin.php<\/code>se hai seguito testualmente il tutorial precedente) aggiungi il codice seguente per accodare JavaScript e CSS per il tuo plugin.<\/p>\n<pre><code>&lt;?php\n\nfunction setup(): void {\n\n    load_plugin_textdomain( 'wholesome-highlighter', false, ROOT_DIR. 'languages' );\n\n    add_action( 'enqueue_block_editor_assets', __NAMESPACE__. 'enqueue_block_editor_assets', 10 );\n\n    add_action( 'enqueue_block_assets', __NAMESPACE__. 'enqueue_block_styles', 10 );\n}\n\nfunction enqueue_block_editor_assets(): void {\n\n    $asset_path = ROOT_DIR. '\/build\/index.asset.php';\n\n    if (! file_exists( $asset_path)) {\n        throw new Error(\n            esc_html__( 'You need to run `npm start` or `npm run build` in the root of the plugin \"wholesome-highlighter\" first.', 'wholesome-highlighter') );\n    }\n\n    $scripts = '\/build\/index.js';\n    $assets  = include $asset_path;\n\n    wp_enqueue_script(\n        PLUGIN_SLUG. '-block-scripts',\n        plugins_url( $scripts, ROOT_FILE ),\n        $assets['dependencies'],\n        $assets['version'],\n        false\n    );\n\n    wp_set_script_translations(\n        PLUGIN_SLUG. '-block-scripts',\n        'wholesome-highlighter',\n        ROOT_DIR. 'languages'\n    );\n}\nadd_action( 'plugins_loaded', __NAMESPACE__. 'setup' );\n\nfunction enqueue_block_styles(): void {\n\n    $styles = '\/build\/style-index.css';\n\n    wp_enqueue_style(\n        PLUGIN_SLUG. '-block-styles',\n        plugins_url( $styles, ROOT_FILE ),\n        array(),\n        filemtime( ROOT_DIR. $styles) );\n}\n\nadd_action( 'plugins_loaded', __NAMESPACE__. 'setup' );\n<\/code><\/pre>\n<ol>\n<li>Registra il tipo di formato<\/li>\n<\/ol>\n<hr \/>\n<p>Apri il tuo <code>\/src\/index.js<\/code>file e aggiungi il codice seguente.<\/p>\n<pre><code>\nimport { RichTextToolbarButton } from '@wordpress\/block-editor';\nimport { __ } from '@wordpress\/i18n';\n\nconst HighlighterButton = ({ isActive, onChange, value}) =&gt; {\n    return (&lt;RichTextToolbarButton\n            icon='edit'\n            isActive={ isActive }\n            title={ __( 'Highlight', 'wholesome-highlighter') }\n        \/&gt;) };\n<\/code><\/pre>\n<p>Questo crea il nostro pulsante evidenziatore che apparir\u00e0 nel menu del formato. Ora useremo <code>registerFormatType<\/code>per registrare il formato.<\/p>\n<p>Per prima cosa, dobbiamo modificare le nostre importazioni per importare anche <code>registerFormatType<\/code>da <code>@wordpress\/rich-text<\/code>.<\/p>\n<pre><code>import { registerFormatType, toggleFormat } from '@wordpress\/rich-text';\n<\/code><\/pre>\n<p>Quindi registrare il formato aggiungendo il nome del formato (<code>wholesome\/highlighter<\/code>) e passando un oggetto con le seguenti propriet\u00e0. <code>toggleFormat<\/code>verr\u00e0 utilizzato in seguito per il nostro evento di clic.<\/p>\n<ul>\n<li><code>className<\/code>: il nome della classe che verr\u00e0 aggiunto al tag che circonda il testo evidenziato.<\/li>\n<li><code>edit<\/code>: Il pulsante che abbiamo registrato in precedenza.<\/li>\n<li><code>tagName<\/code>: il tipo di tag che verr\u00e0 applicato al testo evidenziato. In questo caso stiamo usando <code>&lt;mark&gt;<\/code>il markup semanticamente corretto per l&#8217;evidenziazione del testo.<\/li>\n<li><code>title<\/code>: Il titolo del formato.<\/li>\n<\/ul>\n<pre><code>\nregisterFormatType(\n    'wholesome\/highlighter', {\n        className: 'wholesome-highlight',\n        edit: HighlighterButton,\n        tagName: 'mark',\n        title: __( 'Highlight', 'wholesome-highlighter' ),\n    }\n);\n<\/code><\/pre>\n<h3>Gestisci il clic<\/h3>\n<p>Ora che abbiamo aggiunto il pulsante al menu del formato, tutto ci\u00f2 che dobbiamo fare \u00e8 gestire l&#8217;evento click.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168405-61e7cb11d77e2.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168405-61e7cb11d77e2.png\" alt=\"Formatta il contenuto del tuo post con registerFormatType\" ><\/a><\/p>\n<p>Modifica <code>RichTextToolbarButton<\/code>e aggiungi l&#8217; <code>onClick<\/code>evento.<\/p>\n<pre><code>&lt;RichTextToolbarButton\n  icon='edit'\n  isActive={ isActive }\n  onClick={() =&gt; {\n    onChange(\n      toggleFormat( value, {\n        type: 'wholesome\/highlighter',\n      }) );\n  } }\n  title={ __( 'Highlight', 'wholesome-highlighter') }\n\/&gt;\n<\/code><\/pre>\n<p>Sul trigger chiamiamo <code>toggleFormat<\/code>passando il valore (che \u00e8 il testo evidenziato) e passiamo un oggetto con la <code>type<\/code>propriet\u00e0 impostata al nome del nostro formato.<\/p>\n<p>Ora, quando si fa clic inizialmente sul pulsante, applicher\u00e0 il <code>&lt;mark&gt;<\/code>tag HTML al testo selezionato e, quando si fa nuovamente clic, cambier\u00e0 il formato rimuovendolo di nuovo.<\/p>\n<p>Per visualizzare il codice per intero e per visualizzare gli ultimi aggiornamenti <a href=\"https:\/\/github.com\/wholesomecode\/wholesome-highlighter\/blob\/master\/src\/formats\/highlight.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">, dai un&#8217;occhiata al <code>\/src\/formats\/highlight.js<\/code>file completo all&#8217;interno del plug-in Highlighter<\/a>.<\/p>\n<p>Il codice sopra registrer\u00e0 il blocco per tutti i tipi di blocco. Tuttavia, se vuoi che il blocco appaia solo su determinati tipi di blocco, puoi farlo anche tu.<\/p>\n<p>Per fare ci\u00f2 avremo bisogno di utilizzare il componente di ordine superiore ifCondition e useSelect per determinare il tipo di blocco che abbiamo selezionato.<\/p>\n<p>Per fare ci\u00f2, aggiungi le seguenti importazioni all&#8217;inizio del tuo file.<\/p>\n<pre><code>import { ifCondition  } from '@wordpress\/compose';\nimport { useSelect } from '@wordpress\/data';\n<\/code><\/pre>\n<p>Sopra il <code>registerFormatType<\/code>blocco di codice, aggiungi il seguente blocco di codice di composizione.<\/p>\n<pre><code>\nvar HighlighterButtonContainer = ifCondition( (props) =&gt; {\n    const selectedBlock = useSelect( (select) =&gt; select('core\/block-editor').getSelectedBlock() );\n    return (selectedBlock &amp;&amp;\n        selectedBlock.name === 'core\/paragraph'\n    ); \n} )( HighlighterButton );\n<\/code><\/pre>\n<p>Come puoi vedere dal codice, se il blocco selezionato \u00e8 <code>core\/paragraph<\/code>il componente di ordine superiore <code>ifCondition<\/code>restituir\u00e0 true e quindi consentir\u00e0 il rendering del pulsante.<\/p>\n<p>Tutto ci\u00f2 che dobbiamo fare ora \u00e8 passare il Container che abbiamo appena creato nel <code>registerBlockType<\/code>blocco di codice e il nostro codice \u00e8 finito.<\/p>\n<pre><code>\nregisterFormatType(\n    'wholesome\/highlighter', {\n        className: 'wholesome-highlight',\n        edit: HighlighterButtonContainer,\n        tagName: 'mark',\n        title: __( 'Highlight', 'wholesome-highlighter' ),\n    }\n);\n<\/code><\/pre>\n<p>Per visualizzare il codice per intero <a href=\"https:\/\/github.com\/wholesomecode\/wholesome-highlighter\/blob\/master\/src\/formats\/highlight-paragraph.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dai un&#8217;occhiata al <code>\/src\/formats\/highlight-paragraph.js<\/code>file nel plugin Highlighter<\/a>.<\/p>\n<ul>\n<li>Porta le cose oltre <a href=\"https:\/\/wholesomecode.ltd\/blog\/use-a-modal-popup-to-add-additional-attributes-with-registerblockformat\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aggiungendo attributi personalizzati al tuo formato personalizzato con un popover modale<\/a>.<\/li>\n<li><a href=\"https:\/\/wholesomecode.ltd\/guides\/add-sidebar-controls-to-your-custom-wordpress-block-with-inspectorcontrols\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Aggiungi una barra laterale del blocco con InspectorControls<\/a><\/li>\n<li>Guarda la creazione di una <a href=\"https:\/\/wholesomecode.ltd\/guides\/create-settings-page-wordpress-gutenberg-components\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pagina di opzioni e impostazioni utilizzando i componenti Gutenberg<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Puoi aggiungere pulsanti personalizzati alla barra degli strumenti in WordPress Gutenberg abbastanza facilmente, ma sapevi che puoi anche aggiungere controlli del tipo di formato al menu del formato? In questa guida andremo&#8230;<\/p>\n","protected":false},"author":1,"featured_media":221122,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,896,751,720,844],"tags":[1168],"class_list":["post-229239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-open-source-projektmanagement-3","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229239"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229239\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/221122"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}