web-dev-qa-db-fra.com

Comment trouver les articles pour lesquels une image sélectionnée manque dans la base de données WordPress?

Comment rechercher dans la base de données les articles auxquels une image sélectionnée manque? J'ai regardé autour de moi dans la table wp_posts et j'ai cherché post_type est égal à article. Il me donne une liste de tous les articles mais le fichier GUID contient des images et aucun moyen de voir ceux qui sont vides. Est-ce que quelqu'un sait comment je peux y arriver?

1
MikeL5799

Je suppose que vous voulez qu'il sache dans quel article vous devez éditer et ajouter une image sélectionnée.

Vous pouvez créer un fichier dans le dossier racine de worpdress et utiliser simplement WP_Query pour obtenir toutes les publications et pour vérifier s’il n’ya pas d’image caractéristique, vous pouvez utiliser la fonction has_post_thumbnail().

Modifiez le post_type si nécessaire.

Exemple

<?php
require_once('./wp-load.php');
$query = new WP_Query(array('post_type'=>'post'));
if ( $query->have_posts() ) while ( $query->have_posts() ) : $query->the_post();
    if(has_post_thumbnail() === false) {
    ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br>
    <?php
    }
endwhile;

Si vous souhaitez toujours utiliser le code SQL, vous pouvez créer WP_Query et utiliser le code SQL généré. Vous pouvez également utiliser ce WP_Query comme la première méthode et vous n'avez pas besoin de vérifier si has_post_thumbnail() est faux.

$query = new WP_Query(
    array(
        'post_type'=>'post',
        'meta_query' => array(
            array(
                'key' => '_thumbnail_id',
                'compare' => 'NOT EXISTS'
            )
        )
    )
);
echo ($query->request); // Print the SQL

Donc, le SQL pour cet exemple après que je le modifie est un peu.

SELECT * FROM wp_posts  LEFT JOIN wp_postmeta ON
(wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = '_thumbnail_id' )
WHERE 1=1  AND (wp_postmeta.post_id IS NULL) AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID ORDER BY wp_posts.post_date
2
Shibi