Intereting Posts
Многопользовательская загрузка в параметры темы Добавить разделитель в меню администратора? WSOD на 4.1.1 после перехода с Bluehost на Dreamhost Автоматическое создание паролей пользователей сайта Как WordPress, как я могу потребовать определенные размеры только от пользовательских загрузок WordPress Query String: get_posts ('cat = 5') vs WP_Query ('cat = 5') vs URL: / site /? Cat = 5 Как использовать переходный процесс для кэширования этого результата foreach? Ограничьте фильтр специальным типом сообщения. Правильно ли я это делаю? Получить последнюю измененную дату для ссылки меню Каковы предварительно форматированные HTML-компоненты WordPress? Страница архива без формата сообщения (только стандартная запись) Как я могу заменить свой основной URL-адрес глобально на припаркованном? Как orderby meta_value_num с знаком доллара ($) Проблемы с созданием локального экземпляра сайта wordpress Использование запроса WP для поиска по нескольким мета-полям

Как получить сообщения по содержанию?

Я нашел следующие коды, чтобы получить информацию о деталях. Однако получать сообщения по контенту невозможно. Есть ли у кого-нибудь идеи?

get_posts ()

//// get post //// $args = array( 'numberposts' => -1, // number of posts to display; display all: -1. 'offset' => 0, // 'category' => , // post category ID 'orderby' => 'post_date', 'order' => 'DESC', // Latest post first: 'ASC'; Olderest post first: 'DESC' // 'include' => , // 'exclude' => , // 'meta_key' => , // 'meta_value' => , 'post_type' => 'post', // get post type // 'post_mime_type' => , // 'post_parent' => , // 'post_status' => 'publish' ); // http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters $posts_array = get_posts( $args ); foreach( $posts_array as $post ) : setup_postdata($post); echo "<li><a href='" . the_permalink() . "'>" . the_title() . "</a>" . $post->blog_ID . $post->post_date . $post->post_title . $post->pubtimes . $post->post_author . $post->post_content . $post->post_excerpt . $post->post_status; "</li>"; endforeach; 

Вы должны расширить запрос db для поиска в столбце post_content . Существует фильтр: 'posts_where' вы можете использовать.

Я бы написал простую оболочку для get_posts() чтобы get_posts() свои аргументы и запускать фильтр один раз. Пример:

 class T5_Posts_By_Content { protected static $content = ''; protected static $like = TRUE; /** * Mapper for get_posts() with extra arguments 'content' and 'like' * * 'content' must be a string with optional '%' for free values. * 'like' must be TRUE or FALSE. * * @param array $args See get_posts. * @return array */ public static function get( $args ) { if ( isset ( $args['content'] ) ) { // This is TRUE by default for get_posts(). // We need FALSE to let the WHERE filter do its work. $args['suppress_filters'] = FALSE; self::$content = $args['content']; add_filter( 'posts_where', array ( __CLASS__, 'where_filter' ) ); } isset ( $args['like'] ) and self::$like = (bool) $like; return get_posts( $args ); } /** * Changes the WHERE clause. * * @param string $where * @return string */ public static function where_filter( $where ) { // Make sure we run this just once. remove_filter( 'posts_where', array ( __CLASS__, 'where_filter' ) ); global $wpdb; $like = self::$like ? 'LIKE' : 'NOT LIKE'; // Escape the searched text. $extra = $wpdb->prepare( '%s', self::$content ); // Reset vars for the next use. self::$content = ''; self::$like = TRUE; return "$where AND post_content $like $extra"; } } 

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

 $args = array( 'content' => '%resized%' ); $posts = T5_Posts_By_Content::get( $args ); 

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

 $args = array( 'content' => '%resized%', 'like' => FALSE ); $posts = T5_Posts_By_Content::get( $args ); 

Я не могу придумать элегантный стиль с головы, я не уверен, возможно ли вообще использовать основные функции, но SQL, который вы хотели бы использовать, будет примерно таким (обратите внимание, что это псевдокод):

 SELECT `ID` FROM `$wpdb->posts` WHERE `post_content` LIKE '%search term%' 

Это вернет все идентификаторы сообщений, которые, по мнению SQL, относятся к вашему поисковому запросу.