我正在使用imagemagick处理存储在wordpress自定义字段中的网址中的图片。该脚本实际上做了它的意思,除了一件事,它每次都处理一个额外的图像。代码如下......
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$url1 = '/home/sites/public_html/mysite/wp-content/themes/mytheme/images/';
$imagefile = get_post_meta($post->ID, 'image_url', $single = true);
$file = basename($imagefile);
$location = '/usr/bin/convert';
$command = '-resize 560x';
$convert = $location . ' ' .$command . ' ' . $imagefile . ' ' . $url1 . $file;
exec ($convert);
?>
<?php endwhile; ?>
<?php endif; ?>
它创建的额外图像每次都是相同的,并且是我的帖子列表中的第一个帖子,我不确定它是第一个帖子是否相关。
我也不确定是否是导致问题或wordpress的imagemagick,我使用的imagemagick命令非常简单,所以我倾向于wordpress。
有人可以提出任何建议吗?
更新
我一直在玩,并且发现这个问题似乎只发生在一些帖子上。我已经检查了SQL数据库,并将它们与未受影响的数据库进行了比较,看不到任何明显的数据。
更新2 为了使事情变得更奇怪,我在本地开发服务器上重复了这个设置,我无法复制它。一切正常!如果我在共享主机上执行相同的操作,则问题会再次出现。这让我觉得必须有某个配置导致它。
如果我执行以下代码,则在共享主机上,它可以正常工作....
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$url1 = '/home/sites/public_html/mysite/wp-content/themes/mytheme/images/';
$imagefile = 'http://www.mydomain.com/images/myimage.jpg';
$file = basename($imagefile);
$location = '/usr/bin/convert';
$command = '-resize 560x';
$convert = $location . ' ' .$command . ' ' . $imagefile . ' ' . $url1 . $file;
exec ($convert);
?>
<?php endwhile; ?>
<?php endif; ?>
但如果我恢复到我的原始代码,其中图像URL由wordpress get_post_meta命令生成,那么我得到额外的图像。
更新3 使用wordpress插件BlackBox,我已经能够找到更多关于发生了什么的信息,日志给我这个信息..
0.2501 [ms] SELECT * FROM wp_users WHERE user_login = 'admin';
0.1330 [ms] SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1);
0.0739 [ms] SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1;
0.1280 [ms] SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('uncategorized','my-test-post-75') AND (post_type = 'page' OR post_type = 'attachment');
0.1481 [ms] SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'my-test-post-75' AND wp_posts.post_type = 'post' ORDER BY wp_posts.post_date DESC ;
0.1359 [ms] SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format') AND tr.object_id IN (215) ORDER BY t.name ASC;
0.1402 [ms] SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (215);
0.1140 [ms] SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('category') AND t.slug = 'uncategorized' ORDER BY t.name ASC ;
0.1018 [ms] SELECT tr.term_taxonomy_id FROM wp_term_relationships AS tr INNER JOIN wp_term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN (215) AND tt.taxonomy IN ('category') ORDER BY tr.term_taxonomy_id ASC;
0.1259 [ms] SELECT p.* FROM wp_posts AS p WHERE p.post_date < '2011-06-07 20:40:34' AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY p.post_date DESC LIMIT 1;
0.0758 [ms] SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (204) ORDER BY t.name ASC;
0.0651 [ms] SELECT p.* FROM wp_posts AS p WHERE p.post_date > '2011-06-07 20:40:34' AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY p.post_date ASC LIMIT 1;
0.0849 [ms] SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (251) ORDER BY t.name ASC;
这个新信息是否揭示了可能发生的事情?
答案 0 :(得分:1)
我对于imagemagick没什么经验,但是我经历了类似的情况,使用WordPress核心功能进行大小调整,它会影响添加的新图像,但不会影响在新图像尺寸代码之前添加的旧图像。 / p>
有一个很棒的小工具插件叫做“再生缩略图”,它为我排序了这个,
你可以在wordpress codex中找到它。
答案 1 :(得分:0)
您正在寻找的所有功能目前都在wordpress核心中提供 - 无需添加您自己的imagemagick功能:
你主题的functions.php中的:
if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'custom-size', 560, 560, false );
// or set last option to true for cropping
}
(更多信息:http://codex.wordpress.org/Function_Reference/add_image_size)
在page.php或其他主题文件中:
<?php echo get_the_post_thumbnail($page->ID, 'custom-size'); ?>
(更多信息:http://codex.wordpress.org/Function_Reference/get_the_post_thumbnail)
现在将图片添加到“设置精选图片”下的帖子或页面,然后跳过使用自定义字段和post_get_meta。