¡Tu carrito está actualmente vacío!
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