Usando el Personalizador de WordPress en Javascript

2 minutos de lectura

avatar de usuario
dbso

He creado un control personalizado para el personalizador de WordPress y me gustaría configurar mi control dentro de un script (Instafeed.js), para cambiar el limit número.

Siguiendo esta respuesta, así es como lo hice hasta ahora.

<script type="text/javascript">  
          var userFeed = new Instafeed({
            get: '',
            tagName: '',
            clientId: '',
            limit: var imglimit = <?php echo json_encode($imglimit); ?>;,
            });
            userFeed.run();
</script>

Funciones

$wp_customize->add_setting(
        'imglimit',
        array(
            'default'      => '',
            'section'      => 'section',
));
$wp_customize->add_control('imglimit', array(
      'label'      => __('test'),
      'section'    => 'section',
      'settings'   => 'imglimit',
      'type'       => 'select',
      'choices'    => array(
        '5'   => '5',
        '10'  => '10',
        '20'  => '20',
      ),
));

function theme_customizer()
{
    $imglimit = get_theme_mod('imglimit');
}

¿Alguien podría decirme dónde está el error? He estado buscando esto por un tiempo.

avatar de usuario
Alejandro Mikhalchenko

Bueno, tienes un error de sintaxis aquí 🙂

      var userFeed = new Instafeed({
        get: '',
        tagName: '',
        clientId: '',
        limit: var imglimit = <?php echo json_encode($imglimit); ?>;,
//             ^^^^^^^^^^^^ here                      and here     ^ 
        });

Entonces, deberías cambiar ese bloque de código a

      var userFeed = new Instafeed({
        get: '',
        tagName: '',
        clientId: '',
        limit: <?php echo json_encode($imglimit); ?>,
      });

En realidad, no necesariamente necesita codificar json aquí, ya que es solo un número. Pero si eso fuera una matriz u objeto, sí, debería haberlo codificado.

Y en tu código php deberías hacer $imglimit global:

function theme_customizer()
{
    global $imglimit;
    $imglimit = get_theme_mod('imglimit');
} 

O simplemente pon eso en js:

      var userFeed = new Instafeed({
        get: '',
        tagName: '',
        clientId: '',
        limit: <?php echo json_encode(get_theme_mod('imglimit')); ?>,
      });

  • Gracias por la respuesta, lo probé pero sigue sin funcionar. El script ya no se rompe (puedo ver las imágenes), pero tiene un límite predeterminado de 20 imágenes (tercera opción en el control del personalizador, si la tercera opción es 40, por ejemplo, se queda en 20). Si trato de cambiar el límite a través del personalizador, el límite se mantiene en 20 de todos modos. (Traté de borrar el caché también). ¿Alguna idea de por qué el personalizador no está actualizando el limit ?

    – dbso

    27 de diciembre de 2015 a las 9:49


  • @dbsso, y si codifica el límite, ¿funcionaría como se esperaba?

    – Alexander Mikhalchenko

    27 de diciembre de 2015 a las 10:16

  • Funciona con números definidos, si entiendo lo que estás preguntando.

    – dbso

    27 dic 2015 a las 13:00


  • @dbsso y qué hace limit: <?php echo json_encode($imglimit); ?>, realmente la salida en el cliente?

    – Alexander Mikhalchenko

    27 de diciembre de 2015 a las 13:04

  • Dice limit: null,. Por cierto, el guión se rompe sin json_encode por alguna razón.

    – dbso

    27 de diciembre de 2015 a las 14:27


¿Ha sido útil esta solución?