Поддержка Проблемы и решения Помогите сделать запрос к базе данных.

  • нужно вывести информацию по классам прикрепленных изображений для каждого поста каждого изображения
    т.е. в каждом посте найти все вложения по коду
    <img class="какой то текст"

    и вывести это в виде списка «title поста»,»id поста», <img class=»какой то текст»
    Спасибо

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Получить список записей относительно просто:

    SELECT post_title, ID, post_content
    FROM wp_posts
    WHERE post_content REGEXP '<img class="[^"]*"'
    AND post_status = 'publish'
    ORDER BY ID

    Извлечь из контента сами совпадения с помощью MySQL сложнее (особенно если их несколько в одной записи), но можно обработать полученные результаты в PHP, примерно так:

    global $wpdb;
    
    $img_class_regexp = '<img class="[^"]*"';
    
    $posts = $wpdb->get_results(
    	"SELECT post_title, ID, post_content
    	FROM $wpdb->posts
    	WHERE post_content REGEXP '$img_class_regexp'
    	AND post_status = 'publish'
    	ORDER BY ID"
    );
    
    $results = array();
    
    foreach ( $posts as $post ) {
    	preg_match_all( "/$img_class_regexp/", $post->post_content, $matches );
    
    	foreach ( $matches[0] as $img_class )  {
    		$results[] = array(
    			'post_title' => $post->post_title,
    			'ID'         => $post->ID,
    			'img_class'  => $img_class
    		);
    	}
    }
    ?>
    <table>
    <?php foreach ( $results as $result ) : ?>
    	<tr>
    		<td><?php echo $result['post_title']; ?></td>
    		<td><?php echo $result['ID']; ?></td>
    		<td><?php echo esc_html( $result['img_class'] ); ?></td>
    	</tr>
    <?php endforeach; ?>
    </table>

    Получится таблица следующего вида:

    Hello world! 	82 	<img class="alignnone size-medium wp-image-61"
    Title 		160 	<img class="alignnone size-full wp-image-3"
    test 		1810 	<img class="alignnone size-medium wp-image-181"

    Большое спасибо Еще подскажите пару вопросов.
    1. Куда вставлять SQL?
    2. куда вставлять PHP?

    Я вставлял SQL запрос в phpmyadmin во вкладку SQL — ответ формируется, а как к нему применить php?

    Спасибо

    или, я правильно понял, что внутри php уже есть запрос к безе?
    если да, то остается один вопрос — куда вставлять php?

    С помощью плагина выполнил в записи, получил результат. Это правильное решение?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Помогите сделать запрос к базе данных.» закрыта для новых ответов.