Как найти, существует ли сообщение с custom_field == X?

Я должен найти, существует ли сообщение с пользовательским полем X, равным Y, в установке Wordpress.

Я должен сделать это с простым запросом SQL или там, что-то создает в этом, может помочь мне достигнуть его?

1
14.02.2011, 21:51
3 ответа

Можно использовать WP_Query (); проверять что как это:

$my_query = new WP_Query();
$my_query->query(array( 'meta_key' => 'X', 'meta_value' => 'Y'));
if ( $my_query->have_posts() ){

     //it exists

} else {
    //it's not here
}

Надеюсь, это поможет.

3
19.02.2020, 22:46
  • 1
    Это выглядит хорошим, но какие файлы я должен включать для использования его? Поскольку я должен использовать его от .php, который будет работать как cronjob, не из сменной панели администрации или чего-то как этот. –   14.02.2011, 22:02
  • 2
    @Rocxy это потребует хорошего блока ядра WP. Самый совместимый должен был бы использовать WP-крон, чтобы выполнить его в WP, иначе видеть, как загрузить ядро WP во внешнем коде. –  Rarst 14.02.2011, 22:06
  • 3
    можно перенестись в в функции и возвратить булев TRUE или FALSE, если сообщение существует, и добавьте это к сменному файлу. WP-крон –  Bainternet 14.02.2011, 22:07
  • 4
    бесполезен для этого случая, потому что cronjob делает некоторые действительно обширные задачи, и wp-крон AFAIK добавляют время загрузки крона к веб-сайту. Я буду видеть, могу ли я загрузить WPCore. –   14.02.2011, 22:12

Текущий путь был бы чем-то вроде этого:

$posts = get_posts(array(
    'meta_key' => 'color',
    'meta_value' => 'blue',
));

if( !empty($posts) ) { // some posts found }

Просто обратите внимание, что в предстоящих 3,1 запросах для пользовательских полей значительно улучшен и изменение аргументов, посмотрите Пользовательские Полевые Параметры в Кодексе.

1
19.02.2020, 22:46
  • 1
    Тот же вопрос что касается других ответов, какие файлы я должен включать для использования этого из автономного php файла, который работал бы как cronjob? –   14.02.2011, 22:06

Если Вы хотите использовать это внешне (на Ваши комментарии), сохранить операцию дешевой, Вы могли сделать что-то вроде этого.

<?php
// You'll need to make sure the path is correct here
include_once 'wp-config.php';
include_once 'wp-includes/wp-db.php';

// Of course update the following line with a more appropriate query
$result = $wpdb->get_results("SELECT * FROM $wpdb->posts"); 

print '<pre>';
print_r( $result ); // Remove and do whatever you need to do
print '</pre>';
?>

Загрузка wp-config.php и wp-db.php должен быть достаточно для призыва $wpdb методы для запросов DB для любых данных Вам нужно.

Сообщите мне, нужен ли Вам SQL-запрос в качестве примера для выборки сообщений на основе meta.

0
19.02.2020, 22:46
  • 1
    , Более дешевый все еще, должен был бы просто использовать mysql_query непосредственно, но необходимо было бы затем иметь дело с открытием и закрытием соединений сами, и т.д.... –  t31os 08.03.2011, 14:58