Intereting Posts
Как сделать плагин Newsletter видимым для пользователей с правами автора? Помогите отобразить изображение в одном посте, используя javascript zoom image ..? Разбиение страницы разбивается при объединении результатов поиска с дополнительным WP_Query Есть ли фильтр для удаления или замены ссылки заголовка сообщения в представлении таблицы сообщений администратора (edit.php)? Добавление последней страницы в начало и первую страницу в конец следующей и предыдущей страниц. Функция ссылок пакетное значение автозагрузки UPDATE в таблице wp_options Как установить WP рядом с моим существующим сайтом в подкаталоге (bradydjohnson.com/blog)? Сортировка терминов индивидуально для каждого сообщения Интеграция блога WordPress с Moodle LMS RSS-фид, включая обновления сообщений Wpdb get-> выводит результаты из месяца с db Загружать пользовательские css после начальной загрузки Эффект типа Lightbox для поддержки карты изображений HTML / jQuery Изменить заголовок тега в wp_head с помощью yoast seo Постоянная ссылка установлена ​​на /% postname% /, но все еще есть ссылки, индексированные в форме? P = x

Помощь по сокращению короткого кода IF

Ниже приведен код, над которым я работал, для запуска короткого кода. Я попытался внедрить инструкцию if() , однако ничего не сработало.

У меня два выхода. То, что я ищу, – это если атрибуты

 ('img', 'user', 'text') 

присутствуют в $output1 , отображает $output1 .

В противном случае, если атрибуты

 ('img', 'text', 'length', 'material', 'power') 

присутствуют в $output2 , отображает $output2 .

 function hire_equipment_func($atts) { extract( shortcode_atts( array( 'img' => '', 'user' => '', 'text' => '', 'length' => '', 'material' => '', 'power' => '', ), $atts ) ); $atts = array_change_key_case((array)$atts, CASE_LOWER); return $output1; $output1 = '<div class="hire-equipment-item"> <div class="hire-equipment-item-img"><img src="' . $atts['img'] . '" height=200px" width="200px" alt=""></div><br /> <div class="hire-equipment-item-user">' . $atts['user'] . '</div> <div class="hire-equipment-item-text">' . $atts['text'] . '</div> </div>'; $output2 = '<div class="hire-equipment-item"> <div class="hire-equipment-item-img"><img src="' . $atts['img'] . '" height=200px" width="200px" alt=""></div><br /> <div class="hire-equipment-item-user">' . $atts['user'] . '</div> <div class="hire-equipment-more-information"> <table class="hire-equipment-more-information-table" cellpadding="15px"> <tr> <th>Length:</th> <th>Material:</th> <th>Power:</th> </tr> <tr> <td> ' . $atts['length'] . ' </td> <td> ' . $atts['material'] . ' </td> <td> ' . $atts['power'] . ' </td> </tr> </table> </div> </div>'; } add_shortcode( 'hire_equipment', 'hire_equipment_func' ); 

Любая помощь с этим будет принята с благодарностью!

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

 // Check so fields are set in the `$atts` array. if (isset($atts['img'], $atts['user'], $atts['text'])) { return '<div class="hire-equipment-item"> <div class="hire-equipment-item-img"> <img src="' . esc_url($atts['img']) . '" height=200px" width="200px" alt=""> </div><br /> <div class="hire-equipment-item-user">' . $atts['user'] . '</div> <div class="hire-equipment-item-text">' . sanitize_text_field($atts['text']) . '</div> </div>'; } elseif (isset($atts['img'], $atts['text'], $atts['length'], $atts['material'], $atts['power'])) { // Second output goes here. } 

Обратите внимание, что user не может быть установлен во втором случае, первое условие всегда будет истинным.

Так как разметка для обоих условий очень похожа, лучший подход может быть:

 function hire_equipment_func($atts) { // Store merged result. $atts = shortcode_atts(array( 'img' => '', 'user' => '', 'text' => '', 'length' => '', 'material' => '', 'power' => '', ), array_change_key_case($atts, CASE_LOWER)); $output = '<div class="hire-equipment-item>'; // Check if image should be appended to output. if (isset($atts['img'])) { $output .= '<div class="hire-equipment-item-img"> <img src="' . esc_url($attribs['img']) . '" height="200" width="200" alt="" /> </div>'; } // Check if user should be appended to output. if (isset($atts['user'])) { $output .= '<div class="hire-equipment-item-user">' . $atts['user'] . '</div>'; } // Check if text should be appended to output. if (isset($atts['text'])) { $output .= '<div class="hire-equipment-item-text">' . $atts['text'] . '</div>'; } // Check if we need to output more-information table. if (isset($atts['length']) || isset($atts['material']) || isset($atts['power'])) { $output .= '<div class="hire-equipment-more-information"> <table class="hire-equipment-more-information-table" cellpadding="15px"> <tr> <th>Length:</th> <th>Material:</th> <th>Power:</th> </tr> <tr> <td> ' . (isset($atts['length']) ? $atts['length'] : '') . ' </td> <td> ' . (isset($atts['material']) ? $atts['material'] : '') . ' </td> <td> ' . (isset($atts['power']) ? $atts['power'] : '') . ' </td> </tr> </table> </div>'; } $output .= '</div>'; return $output; } 

Возможно, вам также понадобится использовать sanitazion для вывода. Например, используйте esc_url() для URL-адресов и sanitize_text_field() для строк и т. Д.