Obtener el ID de la entrada actual en functions.php

9 abr 2014, 12:43:54
Vistas: 47.6K
Votos: 7

Tengo una función wp_localize_script() en mi functions.php donde necesito enviar el ID de la entrada actual a un archivo jQuery. Me preguntaba cómo se puede obtener el ID de la entrada actual en mi functions.php.

Estas dos opciones no funcionan:

global $post;
$post_id = $post->ID;

global $wp_query;
$post_id = $wp_query->get_queried_object_id();
0
Todas las respuestas a la pregunta 1
2
12

Si enganchas tu función de script localizado a wp_enqueue_scripts, entonces tendrás acceso a la variable global $post. Siempre que elijas un hook en o después de 'wp', deberías tener acceso al global $post.

<?php
add_action('wp_enqueue_scripts', 'YOUR_NAME_scripts'); 

function YOUR_NAME_scripts() {

            wp_enqueue_script('YOUR_NAME-js');

            global $post;
            $params = array(
                'site_url' => site_url(),
                'admin_ajax_url' => admin_url('admin-ajax.php'),
                'post_id' => $post->ID
            );

            wp_localize_script( 'jquery', 'YOUR_NAME', $params );

}
9 abr 2014 16:07:44
Comentarios

¿Existe alguna otra solución alternativa, como una función independiente por ejemplo, en lugar de dentro de wp_enqueue_scripts?

Manolis Manolis
17 sept 2014 16:04:21

Sí, simplemente engancha a wp_head y muestra las etiquetas de script con var post_id = <?php echo $post->ID;?>;. Solo asegúrate de usar global $post; primero. O muestra tus etiquetas de script en cualquier parte de la Plantilla de Página/Entrada si realmente lo deseas.

Douglas.Sesar Douglas.Sesar
17 sept 2014 18:44:08