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
?

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.
