Я запустил mysql и подтвердил, что этот запрос возвращает результат:
mysql> SELECT * FROM wp_posts WHERE post_parent = 68 AND post_type = 'attachment' AND post_name = 'side-logo-auto2' LIMIT 1; 1 row in set (0.00 sec)
В моем шаблоне я пытаюсь сделать то же самое:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); //$wpdb->posts is wp_posts table //$post->ID is current post of post_type page, //that is associated with page of this template global $wpdb; $image = $wpdb->get_var( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type = %s AND post_name = %s LIMIT 1 ", $post->ID, 'attachment', 'side-logo-auto2' ) ); echo "The image id is {$image->ID}"; echo wp_get_attachment_image($image->ID); endwhile; endif; ?>
$ post-> ID возвращает 68. Однако значение, присвоенное $ image, не является записью, а скорее нулевым.
$wpdb->get_var
возвращает одну переменную, но ваш оператор SQL имеет SELECT *
который возвращает строку из нескольких столбцов.
Вам нужно изменить инструкцию SQL на SELECT ID ...
вместо SELECT * ...