Intereting Posts
Выделите wp_nav_menu, когда выбрана категория Создание шаблона Как реализовать обновление плагина WordPress, которое изменяет базу данных? Предотвратите дополнительные категории верхнего уровня, но разрешите больше детей Сайт застрял в цикле «Обновление базы данных» Рекомендации для книг / ресурса для начала разработки WordPress 3 (плагины / темы) Нужно 2 отдельных элемента add_shortcode для презентации Как разрешить запланированные сообщения, которые говорят «Пропущенный график», Не удается войти в wp-admin, поскольку перенаправление установлено на страницу, еще не опубликованную Wrap Shortcodes и wpautop get_option () не определено в TinymceWindowManager Ограничить поисковый запрос до определенной даты Используйте `post_mime_type`, но также получайте сообщения без прикрепления Как создать URL для страниц / сообщений Как разместить карту сайта для каждого сообщения?

Отображать URL-адрес произвольного изображения из списка входных значений

Я создал страницу параметров в моей теме WordPress, которая позволяет пользователю вводить URL-адрес / загружать изображение в поле ввода. Поле имеет имя headerimage_options [image], и ​​когда оно заполняется, оно может быть сохранено и выведено в теме со следующим кодом: <?php echo esc_url( $headerimage_options['image'] ); ?> <?php echo esc_url( $headerimage_options['image'] ); ?>

Я создал три входа с именами [image], [image2] и [image3]. Я могу сохранить содержимое полей ввода и вывести все изображения, используя следующий код:

 <?php $headerimage_options = get_option( 'headerimage_options' ); ?> <img title="<?php bloginfo( 'name' ); ?>" src="<?php echo esc_url( $headerimage_options['image'] ); ?>"/> <img title="<?php bloginfo( 'name' ); ?>" src="<?php echo esc_url( $headerimage_options['image2'] ); ?>"/> <img title="<?php bloginfo( 'name' ); ?>" src="<?php echo esc_url( $headerimage_options['image3'] ); ?>"/> 

Мой вопрос: как я могу вывести только одно из изображений наугад? Я искал, но не мог найти ответ нигде.

Вместо того, чтобы повторять эти изображения, просто сохраните их как строки внутри массива и произвольно выберите один из элементов массива.

 <?php $headerimage_options = get_option('headerimage_options' ); $images = array(); $images[] = '<img title="'.get_bloginfo('name').'" src="'.esc_url( $headerimage_options['image'] ).'"/>'; $images[] = '<img title="'.get_bloginfo('name').'" src="'.esc_url( $headerimage_options['image2'] ).'"/>'; $images[] = '<img title="'.get_bloginfo('name').'" src="'.esc_url( $headerimage_options['image3'] ).'"/>'; $v = array_rand($images); echo $images[$v]; 

Вы могли бы сделать это таким образом (предполагается, что вы знаете, что все 3 изображения есть каждый раз):

 <?php $headerimage_options = get_option( 'headerimage_options' ); $number = rand(1,3); if($number == 1) $number = ''; ?> <img title="<?php bloginfo( 'name' ); ?>" src="<?php echo esc_url( $headerimage_options['image' . $number] ); ?>"/> 

Спасибо вам обоим. Из этого я понял, как заставить их отображать только изображения, которые имели что-то на самом деле в полях ввода. Таким образом, не разбитое изображение или пустой div, если поле ввода пуст. Я использовал следующий код:

 <?php $headerimage_options = get_option('headerimage_options' ); $images = array(); if ( "" != $headerimage_options['image'] ) : $images[] = '<img title="'.get_bloginfo('name').'" src="'.esc_url( $headerimage_options['image'] ).'"/>'; endif; if ( "" != $headerimage_options['image2'] ) : $images[] = '<img title="'.get_bloginfo('name').'" src="'.esc_url( $headerimage_options['image2'] ).'"/>'; endif; if ( "" != $headerimage_options['image3'] ) : $images[] = '<img title="'.get_bloginfo('name').'" src="'.esc_url( $headerimage_options['image3'] ).'"/>'; endif; $v = array_rand($images); echo $images[$v]; ?> 

Еще раз спасибо.