Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过SQL检索具有特色图像的wordpress帖子_Php_Mysql_Sql_Wordpress - Fatal编程技术网

Php 通过SQL检索具有特色图像的wordpress帖子

Php 通过SQL检索具有特色图像的wordpress帖子,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我在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_i

我在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。我需要检索这些图像的“中等”或“缩略图”大小


?有什么方法可以实现这一点吗?

您可以尝试查询缩略图大小,对于中等图像,我不确定大小是否正确如果您知道尺寸,然后使用自定义别名,如下所示,使用获取文件扩展名,然后我已将函数与
post_name
列和尺寸+扩展名一起使用,同样,对于中等大小,您也可以这样做,因为所有上载都会进入上载文件夹,您可以分析生成的拇指名称是
原始附件名称+-150x150或其他维度
,因此,从该逻辑中,您的拇指可以获得带有维度的名称,post的附件存储在post_meta中,具有post id和键名\u 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的缩略图,希望也适用于您

以下是回复:

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

下面的查询是根据上面的内容改编的,它解决了我的一个特殊问题,那就是抓取最后四篇文章和它们的特色图片。加上post_的名字,我可以用它来构建一个漂亮的URL

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

}
用于($i=0;$i<$num_行;$i++){
$post_content=mysql_result($query_result,$i,“content”);
$post_extract=substr($post_content,0,90);
$post_permalink=$post_url.mysql_result($query_result,$i,“post_name”);
echo$post_permalink;//等
}