Добавление add_action в wp_head через functions.php

19 дек. 2016 г., 21:51:48
Просмотры: 37.9K
Голосов: 11

Я установил тему Twenty Seventeen и дочернюю тему. Теперь я хочу добавить следующий код в functions.php для добавления метаданных в тег <head>, используя действие wp_head:

if ( is_single() ) echo get_post_meta($post->ID, "meta-head", true); ?>

Я попробовал это, но это не сработало:

add_action ('wp_head','hook_inHeader');
function hook_inHeader() {
    if ( is_single() ) {
        echo get_post_meta($post->ID, "meta-head", true);
   }
}
1
Комментарии

Включите режим отладки и выясните, что не так с $post.

fuxia fuxia
19 дек. 2016 г. 22:07:18
Все ответы на вопрос 1
0
11

Причина, по которой опубликованный код не работает, заключается в том, что $post не ссылается на глобальную переменную $post, что и является целью здесь.

Использование get_the_ID() — это хороший способ получить ID, связанный с текущей записью. Я бы рекомендовал использовать именно этот метод, но есть и другие варианты:

add_action ( 'wp_head', 'hook_inHeader' );
function hook_inHeader() {
    if ( is_single() ) {
        // Получаем ID записи с помощью функции get_the_ID():
        echo get_post_meta( get_the_ID(), 'meta-head', true );

        /* Или объявляем $post глобальной, чтобы получить доступ к глобальной переменной $post: */
        //global $post;
        //echo get_post_meta( $post->ID, 'meta-head', true );

        /* Или получаем доступ к глобальной переменной $post напрямую: */
        // echo get_post_meta( $GLOBALS['post']->ID, 'meta-head', true );
    }
}
19 дек. 2016 г. 23:31:55