Получить ID текущей записи в functions.php

9 апр. 2014 г., 12:43:54
Просмотры: 47.6K
Голосов: 7

У меня есть функция wp_localize_script() в файле functions.php, где мне нужно передать ID текущей записи в файл jQuery. Поэтому я хотел узнать, как можно получить ID текущей записи в моем файле functions.php.

Эти оба способа не работают:

// Глобальная переменная post
global $post;
$post_id = $post->ID;

// Получение через глобальный запрос
global $wp_query;
$post_id = $wp_query->get_queried_object_id();
0
Все ответы на вопрос 1
2
12

Если вы подключите функцию локализации скрипта к хуку wp_enqueue_scripts, то у вас будет доступ к переменной global $post. Достаточно выбрать хук начиная с 'wp' или позже, чтобы получить доступ к 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 апр. 2014 г. 16:07:44
Комментарии

Есть ли другой обходной путь, например, в виде отдельной функции, вместо использования внутри wp_enqueue_scripts?

Manolis Manolis
17 сент. 2014 г. 16:04:21

Да, просто подключитесь к хуку wp_head и выведите теги скрипта с var post_id = <?php echo $post->ID;?>;. Только не забудьте сначала использовать global $post;. Или вы можете вывести теги скрипта прямо в шаблоне страницы/записи, если вам действительно нужно.

Douglas.Sesar Douglas.Sesar
17 сент. 2014 г. 18:44:08