Obține ID-ul postării curente în functions.php

9 apr. 2014, 12:43:54
Vizualizări: 47.6K
Voturi: 7

Am o funcție wp_localize_script() în fișierul meu functions.php unde trebuie să trimit ID-ul postării curente către un fișier jQuery. Așa că mă întrebam cum pot obține ID-ul postării curente într-un fișier functions.php.

Următoarele variante nu funcționează:

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

global $wp_query;
$post_id = $wp_query->get_queried_object_id();
0
Toate răspunsurile la întrebare 1
2
12

Dacă conectați funcția de localizare a scriptului la wp_enqueue_scripts, atunci veți avea acces la variabila global $post. Atâta timp cât alegeți un hook la sau după 'wp', ar trebui să aveți acces la 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 apr. 2014 16:07:44
Comentarii

Există vreo altă soluție alternativă, ca o funcție independentă de exemplu, în loc să fie în interiorul wp_enqueue_scripts?

Manolis Manolis
17 sept. 2014 16:04:21

Da, poți folosi hook-ul wp_head și să afișezi tag-uri script cu var post_id = <?php echo $post->ID;?>; Doar asigură-te că folosești global $post; mai întâi. Sau poți afișa tag-urile script oriunde în Șablonul de Pagină/Postare dacă chiar dorești.

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