Crear un plugin con React

Crear con NPM como Brian Coords. Ejecutar el siguiente comando en la carpeta de wp-content/plugins de tu proyecto

npx @wordpress/create-block nameweb-core

/* para compilar */
npm install
npm run build

Esto compilará tu código JavaScript y lo colocará en el directorio build.

O hacer esta estructura de la carpeta y compilar

/nameweb-core
  /build
    /index.asset.php
  /src
    /index.js
  nameweb-core.php
  index.php
  package.json

Con el siguiente contenido:

{
  "name": "nameweb-core",
  "version": "1.0.0",
  "description": "Basic functionalities for the WordPress site, including the registration of Custom Post Types and taxonomies, and additional metadata.",
  "main": "src/index.js",
  "scripts": {
    "build": "wp-scripts build",
    "start": "wp-scripts start"
  },
  "author": "Flavia Bernárdez Rodríguez",
  "license": "GPL-3.0-or-later",
  "devDependencies": {
    "@wordpress/scripts": "^25.0.0"
  }
}
import { registerPlugin } from '@wordpress/plugins';
import { PluginDocumentSettingPanel } from '@wordpress/edit-post';
import { SelectControl } from '@wordpress/components';
import { useSelect, useDispatch } from '@wordpress/data';
import { __ } from '@wordpress/i18n';

const MetaFieldsPanel = () => {
    const { editPost } = useDispatch('core/editor');
    const meta = useSelect((select) =>
        select('core/editor').getEditedPostAttribute('meta')
    );

    const updateMeta = (key, value) => {
        editPost({ meta: { ...meta, [key]: value } });
    };

    return (
        <PluginDocumentSettingPanel
            name="meta-fields-panel"
            title={__('Meta Fields', 'lapd-core')}
            className="meta-fields-panel"
        >
            <SelectControl
                label={__('Arrow Position', 'lapd-core')}
                value={meta.arrow_position}
                options={[
                    { label: 'Top Left', value: 'top left' },
                    { label: 'Top Right', value: 'top right' },
                    { label: 'Bottom Left', value: 'bottom left' },
                    { label: 'Bottom Right', value: 'bottom right' },
                ]}
                onChange={(value) => updateMeta('arrow_position', value)}
            />
            <SelectControl
                label={__('Box Position', 'lapd-core')}
                value={meta.box_position}
                options={[
                    { label: 'Top Left', value: 'top left' },
                    { label: 'Top Right', value: 'top right' },
                    { label: 'Bottom Left', value: 'bottom left' },
                    { label: 'Bottom Right', value: 'bottom right' },
                ]}
                onChange={(value) => updateMeta('box_position', value)}
            />
        </PluginDocumentSettingPanel>
    );
};

registerPlugin('meta-fields-panel', {
    render: MetaFieldsPanel,
});
<?php
return array(
    'dependencies' => array(
        'wp-plugins',
        'wp-edit-post',
        'wp-element',
        'wp-components',
        'wp-data',
        'wp-i18n'
    ),
    'version' => '1.0.0'
);
<?php
/**
 * Plugin Name: Name Web Core
 * Description: Basic functionalities for the WordPress site, including the registration of Custom Post Types and taxonomies, and additional metadata.
 * Version: 1.0
 * Author: Flavia Bernárdez Rodríguez
 * Author URI: https://flabernardez.com
 * License: GPL v3 or later
 * Text Domain: nameweb-core
 * Domain Path: /languages
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

/* aquí el código */

?>

Si estoy en un entorno online donde node está instalado en un sitio en concreto, al iniciar sesión en el entorno (como por ejemplo en nicalia) ejecutar este comando:

export PATH=/opt/alt/alt-nodejs22/root/bin:$PATH

¿Te ha gustado?

Tengo una newsletter que alguna vez retomaré y seguramente sea pronto, así que te animo a que te suscribas para enviarte más cositas monas y desafiantes.

Formulario de suscripción

Al darte de alta en mi boletín, me comprometo a:

 1  Hablar de lo que me preocupa en la actualidad cultural y de las cosas con las que estoy disfrutando en ese momento con la intención de que te rumie la cabeza y podamos tener una conversación cultural activa.
 2  Contestarte si me escribes comentando algún tema del tratado en el correo correspondiente.
 3  Poner colorinchis y gifs monis.
 4  No mirar si te das de baja. Esta es una lista que no juzga, simplemente es disfrutona. Tampoco tiene métricas, los correos se envían a través de un servicio de envío de emails de sendgrid pero el sistema de envío es por medio de un plugin que he creado yo en WordPress. No hay proveedores de terceros que me digan «qué correo funciona más». Directamente paso del capitalismo.
 5  De vez en cuando te enviaré cosillas en las que participo u organizo. La mayoría son en Alicante y gratuitas, aunque si hay algo de pago, como un libro o curso o lo que sea, ¡será previamente avisado!

Nombre
Email *

Estos datos los gestiono yo misma, Flavia Bernárdez Rodríguez y están alojados en el servidor de Nicalia (una empresa de hosting sostenible buenísima cuyo datacenter está en España). Usaré los datos para enviarte emails sobre las cosas que hago, organizo o pienso. Te podrás dar de baja cuando quieras, bien cuando te envíe un mail, o bien diciéndomelo por cualquier método de contacto.

Habrás recibido un correo para confirmar tu suscripción

Tuvimos un error, por favor revisa y prueba de nuevo