Skrolea: Может быть такое, что старый сайт на джумле работал с кешированием, поэтому была нагрузка невысокая. А WP из коробки хоть и готов к кешированию, но сам по себе ничего никуда не кешит, если не попросить. Отсюда все запросы - динамика. И вот тут конечно надо смотреть архитектуру и код, ибо напартачить можно было много где. Агрессивное кеширование может решить симптом (испольование ресурсов), но не решит проблему - все что мимо кеша (например, та же админка), все равно будет жрать ресурсы, и хостер будет слезливо просить перестать насиловать их железо. Впрочем, они это делают при нагрузках 5% уже, им же оверселлить надо, там на одной ноде куча хомячков, а вы за десятерых вдруг кушаете.
Дмитрий S: Да, если руками писать ID постов, то такой вариант норм. Единственное, я бы само поле my_related_posts хранил в виде сериализованного массива (нам сырые данные не нужны), и в 'post__in' не нужно тогда делать implode. К тому же, в будущем, если захотите простенький UI доделать чтобы посты можно было искать и добавлять из админки (страницы редактирования текущего поста), а не ID ручками копипастить, то там массив будет к месту.
Не надо ничего менять на относительные, надо использовать функции WordPress, он сам все выведет с правильным протоколом. Не знаете WordPress - не сбивайте с толку.
Георгий: есть вариант попробовать какой-нибудь плагины типа Enable Media Replace или External Media Upload. На .org их хватает, ищите по remote media, remote library, externla media и подобное. Но я лично никогда не пробовал, было пару раз что надо было заменить - менял тупо в базе относительный на полный и все.
Ну ничего из вопроса не понятно. От слова совсем. Где код писать - в плагине или functions.php не имеет особого значение, между этими подходами есть различия, но выполняются они одинаково. А вот по селектам и фильтрам - ничего не понятно. Вместо тысячи извинений написали бы четко по сути, что есть, что надо, что непонятно :)
Rad Cor: У вас какая-то старая версия, что-ли. Ну попробуйте объект, тогда $file['ID'] замените на $file->ID. Или просто дамп $file сделайте и посмотрите что там внутри и как вытянуть ID. На крайняк, переключайте на опцию ID файла и будет работать наверняка.
Rad Cor: Невнимательно читаете. Если illegal string offset, значит данные прилетают строчные, а не массив. То есть, в настройках поля ACF вы выбрали тип возвращаемых данных URL вместо Array. Переключите на массив, тогда все заработает.
Глеб Жуков: из-за семантики и приоритетности контента. Sidebar - это второстепенный контент, он в html должен идти после основного контента. А если надо визуально их поменять местами - это задача CSS, а не разметки. Ставьте float: left или флексом порядок меняйте.