Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get thumbnail from a wordpress database into an external page

Tags:

php

wordpress

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!

like image 452
Adam Avatar asked Apr 02 '12 10:04

Adam


People also ask

How do I get thumbnails on WordPress?

To get the URL of a post thumbnail you need to add code to the theme template you are customizing. To learn more, refer to our guide on how to add custom code in WordPress. If you simply wanted to display the post thumbnail, then you could paste this code into the template you are working on, inside the WordPress loop.

How do I post a thumbnail on WordPress?

Step 1: Go to the plugin area of your WordPress admin panel. Step 2: Search for a new plugin called, “Magic Post Thumbnail.” Install and activate it. Step 3: A new function will be added to the settings area of WordPress called, “Magic Post Thumbnail.” Click this setting.


3 Answers

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

like image 91
JohnWolf Avatar answered Oct 21 '22 04:10

JohnWolf


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.

like image 21
alexey55 Avatar answered Oct 21 '22 03:10

alexey55


The exact query that worked for me is:

select meta_value FROM wp_postmeta
WHERE meta_key='_wp_attached_file' and post_id =  
  (SELECT meta_value FROM wp_postmeta 
  WHERE post_id=$postId AND 
  meta_key='_thumbnail_id' )  

Where $postId is the id of your post. Note: You need to add the full path to your uploads folder

like image 26
Bisca Avatar answered Oct 21 '22 03:10

Bisca