Цель состоит в том, чтобы Wordpress выплевывал или отображал все изображения из пользовательского формата поста, который я создал.Я новичок в PHP и не собираюсь использовать какие-либо сторонние плагины, возможно, исправление приведенного ниже кода, пожалуйста.
Все решения, с которыми я столкнулся отсюда (stackoverflow) или из Google, не работают или выплевывают ВСЕ изображения, которые я когда-либо загружал из библиотеки мультимедиа, которые мне не нужны.Большинство предоставленных решений предназначены для «показа первого изображения», о котором я знаю, и которое работает, но я хотел бы, чтобы все изображения из поста.
Вот ближайший код, который работал пару раз, но ондеформирует мой макет, а затем возвращается к отображению одного изображения:
function displayPostImg() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches[0][0];
return $first_img;
}
И вызов, который я использую, чтобы вставить в свой собственный пост php:
<?php echo displayPostImg(); ?>
Как указано выше, существующие решения не работают.Любая помощь с четким объяснением того, что я делаю неправильно, будет огромной помощью.
РЕДАКТИРОВАТЬ
@ corvidism Спасибо за дальнейшие объяснения, человек.Я взглянул на инструменты разработки, и «возвратный взлет», похоже, вывел его из цикла, вызывая проблему с макетом.Ваше решение действительно показывает изображения / вложения, которые я опубликовал, но я не могу исправить эту неудачу.Кажется, что есть переход к решению, которое должно делать то же самое.Это печально перекликается с каждым изображением из медиатеки.Объединение вашего кода с приведенным ниже приблизило меня, но если я найду решение, я опубликую его здесь для других:
$args = array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' =>'any',
'post_parent' => $post->ID );
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
echo apply_filters( 'the_title' , $attachment->post_title );
the_attachment_link( $attachment->ID , false );
}
}
РЕДАКТИРОВАТЬ # 2: Решение
Поработав с различными решениями, я нашел кое-что, что работает.Попробуйте:
function grab_those_images( $post ) {
$content_post = $post->post_content;
$search_post = '~src="[^"]*"~';
preg_match_all( $search_post, $content_post, $imgs );
$no_of_pics = count($imgs[0]);
if ( $no_of_pics > 0 ) {
for ( $i=0; $i < $no_of_pics ; $i++ ) {
$string=$imgs[0][$i];
$string=trim( $string );
$length=strlen( $string );
$image_path=substr_replace( substr( $string, 5, $length ),"",-1 );
echo '<img src="';
echo $image_path;
echo '" />';
}
}
}