Un usuario preguntó 👇
Hola, he creado un nuevo bloque usando la función register_acf_block_types como se muestra aquí.
// Register ACF blocks
function register_acf_block_types() {
acf_register_block_type(array(
'name' => 'Slideshow',
'title' => __('Slideshow'),
'description' => __('A slideshow.'),
'render_template' => 'includes/slideshow.php',
'category' => 'layout',
'icon' => 'slides',
'keywords' => array( 'slideshow', 'gallery', 'images' ),
'post_types' => array('news', 'page'),
));
}
// Check if function exists and hook into setup.
if( function_exists('acf_register_block_type') ) {
add_action('acf/init', 'register_acf_block_types');
}
Las imágenes se muestran correctamente en la matriz de bloques y en los modos de vista previa. Lo que estoy luchando por lograr es iniciar una presentación de diapositivas Cycle2 en modo de vista previa de bloque. Estoy usando la clase correcta de «deslizamiento en bicicleta» que debería comenzar automáticamente.
El script Cycle2 funciona bien en el editor de páginas al:
function my_block_plugin_editor_scripts() {
wp_enqueue_script(
'my-block-editor-js',
get_theme_file_uri('/scripts/jquery.cycle2.min.js'),
[ 'wp-blocks', 'wp-element', 'wp-components', 'wp-i18n' ]
);
wp_enqueue_script( 'cycle2swipe', get_template_directory_uri() . '/scripts/jquery.cycle2.swipe.min.js', array(), '1.0.0', true, ['wp-blocks'] );
}
// Hook the enqueue functions into the editor
add_action( 'enqueue_block_editor_assets', 'my_block_plugin_editor_scripts' );
<?php $images = get_field('slideshow'); ?>
<div class="slideshow cycle-slideshow"
data-cycle-fx="fadeout"
data-cycle-manual-fx="fadeout"
data-cycle-speed=2000
data-cycle-timeout=6000
data-cycle-prev="#prev"
data-cycle-next="#next"
data-cycle-swipe=true
data-cycle-swipe-fx="fadeout"
data-cycle-manual-speed="300"
data-cycle-slides=".slide"
data-cycle-pause-on-hover="true"
data-cycle-random="false"
>
<?php foreach( $images as $image ): ?>
<div class="slide">
<img src="<?php echo $image['sizes']['banner']; ?>" alt="<?php echo $image['alt']; ?>" />
</div><!--slide-->
<?php endforeach; ?>
</div><!--slideshow-->
Este es mi primer intento de trabajar con la vista previa del bloque, así que no estoy seguro de lo que me estoy perdiendo. ¡Asumiendo que sea algo obvio! ¡Agradecemos cualquier ayuda!
(@coreymckrill)
Hace 1 año, 9 meses
Hola @inhouse
Dado que esto se relaciona con la funcionalidad específica del plugin Advanced Custom Fields, recomendaría consultar sus canales de soporte para este problema. Aquí es por dónde empezar:
https://wordpress.org/support/plugin/advanced-custom-fields/
Lanzador de hilos
(@inhouse)
Hace 1 año, 9 meses
@coreymckrill Saludos, estoy de acuerdo, gracias por tomarse el tiempo para responder 🙂 La sección Campos personalizados avanzados está funcionando como se esperaba. A donde voy a ir es a iniciar la presentación de diapositivas de Cycle2 en la vista previa del bloque en el editor de publicaciones. Solo consideré que la información sobre ACF era lo más completa posible. ¡Cualquier otra idea es bienvenida!
(@coreymckrill)
Hace 1 año, 9 meses
Lo siento, asumí que ACF también proporcionó la biblioteca Cycle2.
Cuando dices «modo de vista previa», solo te refieres a hacer clic en el botón Vista previa en la parte superior del editor y ver la publicación en una nueva pestaña, ¿verdad?
Lo primero que intentaría es agregar su función de scripts con un gancho adicional para que se pongan en cola en el frente. Ahora dudo que se pongan en cola en la interfaz del editor. Entonces algo como:
add_action( 'wp_enqueue_scripts', 'my_block_plugin_editor_scripts' );
Lanzador de hilos
(@inhouse)
Hace 1 año, 9 meses
No, Cycle2 es una biblioteca jquery Estoy poniendo en cola a mano.
La vista previa del bloque es lo que estoy informando; no para obtener una vista previa de la publicación en el frente. Aquí hay una imagen: https://www.dropbox.com/s/ptbiwxo3oancopt/Screen%20Shot%202019-05-29%20at%204.57.11%20PM.png?dl=0
¿Puede confirmar que la forma en que ejecuté el script no solo se aplicará a la vista previa del bloque y al editor de bloques? Está en mi publicación original.
(@coreymckrill)
Hace 1 año, 9 meses
Ah, creo que el botón «Cambiar a vista previa» es específico para los bloques creados a través de ACF. Los bloques registrados a través de métodos estándar de WP no lo hacen.
Así que aquí hay algunas ideas más:
1) Me gusta la forma en que se promulgan los scripts, excepto: parece que no enumera jQuery como una dependencia de su script principal Cycle2. Eso puede hacer una diferencia o no, porque jQuery ya parece estar cargado de todos modos, pero no estaría de más intentar agregarlo a la matriz.
2) No sé exactamente cómo funciona el bloque de vista previa de ACF, pero si da el marcado HTML en el acto, cuando hace clic en ese botón de Vista previa, es posible que Cycle2 no esté respondiendo a do cycle-slideshow
clase porque ya ha comenzado en ese punto.
Lanzador de hilos
(@inhouse)
Hace 1 año, 9 meses
¡Oh, hombre, no tenía idea de que WP no tenía la vista previa del bloque nativo> 5.0! Perdón por la confusion. Los bloques todavía son muy nuevos para mí. Agradezco su ayuda y volveré a publicar aquí cuando llegue al fondo del problema.
Lanzador de hilos
(@inhouse)
Hace 1 año, 9 meses
Hasta ahora, he agregado los scripts a mi archivo ‘render_template’ en lugar de a través de wp_enqueue_script y Cycle2 se está iniciando correctamente. Tal vez haya una mejor manera de lograr esto, pero todavía estoy aprendiendo las mejores prácticas.
<script src="<?php echo bloginfo('template_url'); ?>/scripts/jquery.cycle2.min.js" type="text/javascript" defer></script>
(@coreymckrill)
Hace 1 año, 9 meses
¡Suena bien! Gracias por el seguimiento del ejemplo de código, ya que sin duda habrá otros que tengan preguntas similares. Quizás valga la pena preguntarle a la gente de ACF si conocen alguna de las mejores prácticas para usar scripts en su modo de vista previa.
¿Solucionó tu problema??
0 / 0