7

我在 Wordpress 之外的 PHP 脚本中使用此查询来检索带有特色图像的条目

SELECT  ( SELECT guid FROM wp_posts WHERE id = m.meta_value ) AS url 
FROM wp_posts p, wp_postmeta m
WHERE p.post_type =  'post'
AND p.post_status =  'publish'
AND p.id = m.post_id
AND m.meta_key =  '_thumbnail_id'

......它工作正常。

但是这样我就得到了全尺寸的图像 URL。我需要检索这些图像的“中等”或“缩略图”大小。

¿ 有什么方法可以做到这一点?

4

4 回答 4

2

这是回应:

SELECT TITRE,DESCR,URL, CONCAT(LEFT(IMG, LENGTH(IMG) - LOCATE('.', 
REVERSE(IMG))),'-150x150.',SUBSTRING_INDEX(IMG, '.', -1)) AS IMG FROM (
SELECT    
p.`post_title` AS TITRE, 
(SELECT `meta_value` FROM wp_postmeta WHERE `post_id` = p.`ID` and `meta_key`='_yoast_wpseo_metadesc') AS DESCR,
p.`guid` AS URL,
(SELECT `guid` FROM wp_posts WHERE id = m.meta_value) AS IMG
FROM wp_posts p, wp_postmeta m
WHERE p.post_type =  'post'
AND p.post_status =  'publish'
AND p.id = m.post_id
AND m.meta_key =  '_thumbnail_id') TT

where DESCR is not null
于 2014-03-25T18:55:01.913 回答
2

以下查询,改编自上面,解决了我的特殊问题,即简单地获取最后四个帖子及其特色图片。加上我可以从中构造一个漂亮 URL 的 post_name

SELECT title, post_name, date, content, CONCAT(LEFT(image, LENGTH(image) - LOCATE('.', REVERSE(image))),'-150x150.',SUBSTRING_INDEX(image, '.', -1)) AS image
FROM (
  SELECT    
  p.post_title AS title, 
  p.post_status AS 'status', 
  p.post_date AS date,
  p.post_content AS content,
  p.post_name AS post_name,
  (SELECT `guid` FROM wp_posts WHERE id = m.meta_value) AS image
  FROM wp_posts p, wp_postmeta m
  WHERE p.post_type = 'post'
  AND p.post_status = 'publish'
  AND p.id = m.post_id
  AND m.meta_key = '_thumbnail_id'
  ORDER BY date DESC
  LIMIT 4
) TT

当然,从那里很容易使用以下方法制作摘录等:

for($i=0; $i< $num_rows; $i++){  
  $post_content = mysql_result($query_result, $i, "content"); 
  $post_excerpt = substr($post_content, 0, 90); 
  $post_permalink = $post_url . mysql_result($query_result, $i, "post_name");

  echo $post_permalink; //etc

}
于 2017-01-17T12:27:12.123 回答
1

您可以尝试此查询缩略图大小,对于中等图像,如果您知道尺寸,我不确定正确的大小,然后按照我在下面使用SUBSTRING_INDEX制作的自定义别名来获取文件的扩展名,然后我使用 了CONCAT函数post_name列和尺寸+扩展,同样你可以这样做中等大小,因为所有上传到上传文件夹,你可以分析生成的拇指名称,original attachment name + -150x150 or other dimensions所以从这个逻辑你的拇指得到尺寸的名称,帖子的附件是存储在 post_meta 中,带有 post id 并具有键名_wp_attachment_metadata它存储有关不同大小文件的所有信息,但以序列化形式存储,因此在 mysql 查询中,您无法取消序列化数据

SELECT    
CONCAT(p.`post_name` ,'-150x150.',
SUBSTRING_INDEX(( SELECT `guid` FROM wp_posts WHERE id = m.meta_value ), '.', -1) )    
 AS `thumbnail`,
 (SELECT guid FROM wp_posts WHERE id = m.meta_value ) AS `full`
FROM wp_posts p, wp_postmeta m
WHERE p.post_type =  'post'
AND p.post_status =  'publish'
AND p.id = m.post_id
AND m.meta_key =  '_thumbnail_id'

这个查询对我有用,以获得大小为 150*150 的缩略图,希望它也对你有用

于 2013-09-28T14:14:55.957 回答
0
SELECT    
    p.ID,
    p.post_title AS title, 
    p.post_name AS post_name,
   (SELECT meta_value from wp_postmeta where post_id = m.meta_value and meta_key='_wp_attachment_metadata') AS meta_value
FROM 
    wp_posts p, 
    wp_postmeta m
WHERE
        p.post_type = 'post'
    AND p.post_status = 'publish'
    AND p.id = m.post_id
    AND m.meta_key = '_thumbnail_id'
ORDER BY 
    p.post_date DESC
LIMIT 5;

And then use unserialize PHP function with meta_value

于 2021-08-28T16:20:22.603 回答