Я добавил HTML-баннеры в начало некоторых страниц на сайте клиента. Он хочет внести изменения в текстовые фразы на этих баннерах без необходимости редактировать любой HTML. Как мне это открыть?
Раньше я просто создал набор страниц, которые я вставляю в свои HTML-баннеры, используя следующий код:
<div class="banner-top"> <h1><?php echo $about_us_phrase->post_title; ?></h1> <p><?php echo apply_filters( 'the_content', $about_us_phrase->post_content ); ?></p> </div>
Но это кажется хакерским, особенно потому, что он заставляет клиента плавать через потенциально большое количество страниц, чтобы найти тот, который соответствует тексту, который они хотели бы изменить.
Какой способ WordPress-y сделать это?
Связаны ли баннеры с каждой страницей? Если это так, я бы использовал пользовательское поле или просто метабокс, который пользователь мог бы редактировать или вводить информацию на странице, которую вы хотите, чтобы баннер отображался. Поле будет отображаться ниже содержимого в редакторе страниц. Тогда вы в своем single.php добавили бы код, который вы указали выше, чтобы заключить все, что указано в настраиваемом поле.
Если баннеры НЕ относятся к отдельным страницам. Я бы сделал настраиваемый тип сообщений «баннеры», а затем их случайным образом отображали на страницах, вставив вызов для CPT в файле single.php.
Вы можете использовать плагин для создания полей, или эти ссылочные ссылки помогут вам начать создавать свои собственные:
https://codex.wordpress.org/Plugin_API/Action_Reference/add_meta_boxes (объяснение и т. д.)
https://developer.wordpress.org/reference/functions/add_meta_box/ (примеры и использование кода)
Создайте пользовательскую боковую панель для баннера, затем добавьте из темы любой код, который вы не хотите редактировать или коснитесь, наконец, попросите их использовать простой текстовый виджет для добавления / изменения / удаления текста.
Таким образом, если текстовый виджет (например, баннер не используется) отсутствует, баннер вообще не будет отображаться.
Для более сложного контента я также хотел бы использовать пользовательский тип сообщения и настраиваемые поля.