it-swarm-pt.tech

Como descobrir se existe uma postagem com custom_field == X?

Eu preciso descobrir se existe uma postagem com um campo personalizado X igual a Y em uma instalação do wordpress.

Devo fazê-lo com uma consulta SQL simples ou há algo que pode me ajudar a alcançá-lo?

1
user3148

Você pode usar o WP_Query (); para verificar isso assim:

$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
}

Espero que isto ajude.

3
Bainternet

O caminho atual seria algo assim:

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

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

Apenas observe que no 3.1 próximo a consulta de campos personalizados é consideravelmente melhorada e os argumentos mudam, veja Parâmetros de Campo Customizado no Codex.

1
Rarst

Se você quiser usar isso externamente (por seus comentários), para manter a operação barata, você poderia fazer algo assim.

<?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>';
?>

Carregar wp-config.php e wp-db.php deve ser suficiente para chamar os métodos $wpdb para consultar o DB para quaisquer dados que você precisar.

Deixe-me saber se você precisa de um exemplo de consulta SQL para buscar posts baseados em meta.

0
t31os