I have a wordpress installation. What i'd like to do is call data directly from the wordpress tables in the database and display them on some other non-wordpress pages.
At the moment i'm successfully pulling in the three most recent posts from the wp_posts table. I can't however see in the schema where the post thumbnail (or featured image) are stored.
How can I get either the featured image, or thumbnail? (either will do!)
Thanks in advance!
Its all in you wp_postmeta table
will query the thumbnail ID of a certain post ID (you need to have your post IDs).
SELECT * FROM 'tksql_postmeta' WHERE post_id=1 AND meta_key='_thumbnail_id'
Imagine the returned thumb id is : 600
SELECT * FROM 'tksql_postmeta' WHERE post_id=600
will give you two rows :
meta_key="_wp_attached_file" will give url
meta_key="_wp_attachment_metadata" will give meta info like size etc
Hope this helps better
There is a way to pick up thumbnail url with other post data in one select query.
You need to create special function onetime:
DELIMITER $$
CREATE FUNCTION `get_post_thumbnail`(`incoming_post_id` INT)
RETURNS TINYTEXT
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
set @src:=null;
set @thumb_id:=null;
SELECT
meta_value into @thumb_id
FROM
wp_postmeta
WHERE
`post_id` = incoming_post_id
AND
meta_key='_thumbnail_id';
SELECT
guid into @src
FROM
wp_posts
WHERE
ID = @thumb_id;
return @src;
END
$$
DELIMITER ;
Then you can use it this way:
select get_post_thumbnail(wp_posts.ID) as "thumbnail_url" from wp_posts where wp_posts.ID = 1
i hope that this solution will be useful for somebody.