Этот вопрос требует некоторого php, некоторого jquery и некоторой общей логики программирования.
С большой помощью в предыдущих вопросах здесь я создал сценарий, который сканирует сообщения WordPress для вложений изображений и, если он найдет их, перемещает их, чтобы перечислить элементы во вновь созданной <ul>
за пределами сообщения. Причина этого заключается в том, чтобы сделать изображения доступными для слайдера (RoyalSlider), которые я жестко кодирую в тему (я не хочу использовать версию плагина WP по нескольким причинам).
Вы можете увидеть сайт, над которым я работаю здесь .
Тот же скрипт загружает несколько частей сайта – ползунки в двух верхних разделах и клиентские логотипы в последнем разделе.
Теперь мне нужно добавить миниатюру на ползунок второй секции. Как вы можете видеть, проверяете ли вы код, я изменил цикл WP (в шаблоне страницы для этого раздела), чтобы он возвращал миниатюры для любых изображений, прикрепленных к сообщению (а также, очевидно, самих изображений).
Это код, который я использую для этого:
<?php $images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=' . $post->ID ); foreach( $images as $imageID => $imagePost ) echo wp_get_attachment_image($imageID, 'thumbnail', false); ?>
Проблема в том, что в настоящее время он взаимодействует с моим сценарием jQuery, чтобы эти эскизы перемещались в элементы списка и включались в слайдер в качестве изображений! Цель состоит в том, чтобы включить каждую миниатюру в <img>
соответствующего изображения, например:
<img class="rsImg" src="image.jpg" data-rsTmb="small-image.jpg" alt="image description" />
Итак, вот логическая часть проблемы: какой лучший способ заставить эти миниатюры вести себя как миниатюры, а не изображения? Я подозреваю, что мне нужно как-то пометить их в цикле шаблонов страниц WP, прежде чем они когда-либо получат «echo'd» в сообщении, так что другой скрипт не забирает их? т.е., возможно, передать их как последовательность переменных, а затем использовать мой скрипт для проверки их, и если он их найдет, назначьте их изображениям последовательно, в первую очередь? Это возможно? Или есть лучшие способы обойти это? Могу ли я, возможно, выводить как изображения, так и миниатюры в нужный фрагмент кода непосредственно из цикла WP?
У меня почти нулевое знание того, как писать PHP за пределами базового, так что я не могу экспериментировать с этим.
Любая помощь в этом очень ценится – я понимаю, что этот вопрос – это высокий порядок, поскольку он требует экспертизы в нескольких областях и является довольно конкретным, но я думаю, что это может помочь другим в подобных ситуациях, и я, конечно, многому научился бы от ноу-хау подойти / выполнить это!
Я не знаю, правильно ли я это понял. Я понял, что вы не хотите, чтобы миниатюры соответствовали вашему jQuery.
Вы можете решить это, просто изменив согласованные элементы вашего кода jquery. Это не лучшее решение, но проще на основе того, что вы сделали.
Добавление класса в миниатюры:
echo wp_get_attachment_image($imageID, 'thumbnail', false);
в
echo wp_get_attachment_image($imageID, 'thumbnail', false, array('class' => 'thumbsimg'));
Ссылка: http://codex.wordpress.org/Function_Reference/wp_get_attachment_image
И измените код jQuery:
var matchesEl = "img, iframe"
в
var matchesEl = "img:not(.thumbsimg), iframe"
Вместо
echo wp_get_attachment_image($imageID, 'thumbnail', false);
^ Это возвращает элемент HTML img.
использование
wp_get_attachment_image_src( $imageID, $size, $icon );
^ Это возвращает массив, содержащий Url, Width, Height изображения.
пример в вашем случае:
$images =& get_children( array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'post_parent' => $post->ID, 'posts_per_page' => -1 ) ); foreach ( (array) $images as $imageID => $imagePost ) { // Getting the full image size and thumbnail $thumbnail = wp_get_attachment_image_src( $imageID, 'thumbnail'); $full = wp_get_attachment_image_src( $imageID, 'full'); echo '<img class="rsImg" src="'. $full[0] .'" data-rsTmb="'. $thumbnail[0] .'" alt="'. $imagePost->post_content .'" />'; }