Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
¿Cómo puedo hacer un control de lista desplegable que obtenga nombres de tipos de publicaciones personalizadas?

¿Cómo puedo hacer un control de lista desplegable que obtenga nombres de tipos de publicaciones personalizadas? En mi proyecto, quiero seleccionar un nombre de tipo de publicación y buscarlo en el selector desplegable en mi Bloque Gutenberg personalizado. ¿Cómo puedo hacer esto?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Si crea una lista desplegable (seleccionar) para la función edit() de un bloque de Gutenberg, los tipos de publicaciones registradas se pueden recuperar con getPostTypes() a través useSelect() en JavaScript. Un ejemplo de esto es el menú desplegable en el bloque de consulta para seleccionar un tipo de publicación.

A continuación se muestra un ejemplo simplificado que utiliza un <SelectControl/> para mostrar una lista de todos los tipos de publicaciones visibles y permite que un postType seleccionado se guarde en los atributos de los bloques.

bloque.json

 { ... "attributes": { "postType": { "type": "string", "default": "post" } } }

editar.js

 import { useSelect } from '@wordpress/data'; import { store as coreStore } from '@wordpress/core-data'; import { SelectControl } from '@wordpress/components'; import { useBlockProps } from '@wordpress/block-editor'; export default function Edit({ attributes, setAttributes }) { // postType defined in block.json const { postType } = attributes; // useSelect to retrieve all post types const postTypes = useSelect( (select) => select(coreStore).getPostTypes({ per_page: -1 }), [] ); // Options expects [{label: ..., value: ...}] var postTypeOptions = !Array.isArray(postTypes) ? postTypes : postTypes .filter( // Filter out internal WP post types eg: wp_block, wp_navigation, wp_template, wp_template_part.. postType => postType.viewable == true) .map( // Format the options for display in the <SelectControl/> (postType) => ({ label: postType.labels.singular_name, value: postType.slug, // the value saved as postType in attributes }) ); return ( <div {...useBlockProps()}> <SelectControl label="Select a Post Type" value={postType} options={postTypeOptions} onChange={(value) => setAttributes({ postType: value })} /> </div> ); }

La ventaja de usar JavaScript para el Editor en lugar de recurrir a PHP es que puede mantener la IU consistente usando controles de Gutenberg como <SelectControl/> .

La barra lateral de configuración puede ser un buen lugar para colocar su <SelectControl/> dependiendo de su objetivo.

about 4 years ago · Juan Pablo Isaza Report

0

$post_types = get_post_types( [ 'public' => true, '_builtin' => false, ], 'objects', 'and' ); <select name="post-types" class="form-control"> <?php foreach ( $post_types as $post_type ) { ?> <option value="<?php echo esc_attr($post_type->name); ?>"> <?php echo esc_html($post_type->label) ?> </option> <?php } ?> </select>

Si desea pasar variables (en este ejemplo: CPT) para bloquear scripts, puede usar wp_localize_scripts:

 wp_enqueue_script('gutenberg-select-cpt-block', $pathToScript, [], null, true); wp_localize_script( 'gutenberg-select-cpt-block', YOURJSOBJECT, ['post_types' => $post_types] <--- array of data you want to pass );
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!