Как установить глобальную переменную в functions.php
Я хочу иметь возможность выводить URL изображения записи и после поиска в интернете нашел следующий код, который хорошо работает, когда я помещаю его в цикл на шаблоне главной страницы.
<?php $thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0']; ?>
<?php echo $urlSmall; ?>
Однако я хочу использовать переменную $urlSmall и в других местах, а не только в шаблоне главной страницы, и здесь мои ограниченные навыки программирования подводят меня. Я попробовал просто скопировать и вставить
wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0'];
в мой functions.php, но это не сработало. Мне нужно, чтобы эти переменные распознавались глобально. Что мне делать? Написать какую-то функцию?

Вы можете преобразовать ваш сниппет в функцию, которая возвращает URL миниатюры записи:
function wpse81577_get_small_thumb_url( $post_id ) {
$thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'small' );
return $thumbSmall['0'];
}
Использование, передавая ID записи:
<?php echo wpse81577_get_small_thumb_url( 59 ); ?>

Круто, но как мне динамически получить ID записи в <?php echo wpse81577_get_small_thumb_url( 59 ); ?>, я хочу использовать это в цикле?

Чистый вопрос по PHP, на самом деле.
global $urlSmall;
$urlSmall = $thumbSmall['0'];
Если вы объявляете переменную с помощью ключевого слова global
при её инициализации, она будет доступна в дальнейшем. Вы можете, так сказать, импортировать её с помощью...
global $urlSmall;
var_dump($urlSmall);
Того же можно достичь, присваивая ключи/значения напрямую массиву $GLOBALS
.
$GLOBALS['urlSmall'] = $thumbSmall['0'];
Это, кажется, самый прямой ответ на вопрос:
Мне нужно, чтобы эти переменные были глобально доступны. Что мне здесь делать?
Однако могут существовать и более оптимальные способы обработки данных.

Хорошо, у меня вроде бы работает! Но s_ha_dum, как я могу достичь чего-то подобного без использования глобальных переменных?

Извините, моя ошибка, я поторопился - это не решило мою проблему. Когда я следую вашим советам и добавляю global $urlSmall; var_dump($urlSmall); в шаблон главной страницы, на странице просто выводится NULL.

Если вам нужен глобальный доступ к переменным, вам придётся использовать глобальные переменные. Другой вариант - собрать функцию, как предложено в другом ответе. Я не знаю, почему у вас не получается. Это работает. Вы должны убедиться, что файл, где определена переменная, выполняется до того, как вы попытаетесь её использовать - возможно, в этом проблема.
