Obtener el ID de la entrada actual en functions.php
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();
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 );
}
¿Existe alguna otra solución alternativa, como una función independiente por ejemplo, en lugar de dentro de wp_enqueue_scripts?
Manolis
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