Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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
Imagemagick和wordpress脚本生成两个图像_Imagemagick_Wordpress - Fatal编程技术网

Imagemagick和wordpress脚本生成两个图像

Imagemagick和wordpress脚本生成两个图像,imagemagick,wordpress,Imagemagick,Wordpress,我正在使用imagemagick处理存储在wordpress自定义字段中的URL中的图像。这个脚本实际上做了它想要做的事情。除了一件事,它每次都处理一个额外的图像。代码如下 <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $url1 = '/home/sites/public_html/mysite/wp-content/themes/mytheme

我正在使用imagemagick处理存储在wordpress自定义字段中的URL中的图像。这个脚本实际上做了它想要做的事情。除了一件事,它每次都处理一个额外的图像。代码如下

<?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; ?>

它创建的额外图像每次都是相同的,并且是我帖子列表中的第一篇帖子,我不确定这是不是第一篇相关的帖子

我也不确定是imagemagick导致了问题还是wordpress,我使用的imagemagick命令非常简单,所以我倾向于wordpress

有人能提出什么建议吗

更新

我一直在玩,发现这个问题似乎只发生在几个帖子上。我已经检查了SQL数据库,并将它们与未受影响且看不到任何明显内容的数据库进行了比较

更新2 更奇怪的是,我已经在本地dev服务器上复制了这个设置,我无法复制它。一切正常!如果我在我的共享主机上做同样的事情,那么问题又来了。这让我觉得一定是某个地方造成的

在共享主机上,如果我执行以下代码,那么它将正常工作

<?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.2501[ms]从wp_用户中选择*其中用户登录='admin';
0.1330[ms]从wp_usermeta中选择user_id、meta_键、meta_值,其中user_id位于(1)中;
0.0739[ms]从wp_选项中选择选项_值,其中选项_名称='theme_switched'限制1;
0.1280[ms]从wp_posts中选择ID、post_name、post_parent,其中post_name IN('uncategorized'、'my-test-post-75')和(post_type='page'或post_type='attachment');
0.1481[ms]选择wp_posts.*从wp_posts中,1=1,wp_posts.post_name='my-test-post-75'和wp_posts.post_type='post'顺序按wp_posts.post_日期描述;
0.1359[ms]选择t.*,tt.*,从wp_术语中选择tr.object_id作为t内部连接wp_术语分类法作为tt上的tt.term_id=t.term_id内部连接wp_术语关系作为tr.term_分类法=tt.term_分类法\u id,其中tt.taxonomy在('category','post_tag','post_format')和tr.object_id在(215)中按t.name ASC排序;
0.1402[ms]从wp_Posteta中选择post_id、meta_键、meta_值,其中post_id位于(215);
0.1140[ms]从wp_terms中选择t.*,tt.*作为t内部连接wp_term_分类法作为t.term_id=tt.term_id上的tt,其中tt.taxonomy IN('category')和t.slug='uncategorized'按t.name ASC排序;
0.1018[ms]从wp_-term_关系中选择tr.term_-taxonomy_id,作为tr.term_-taxonomy_id=tt.term_-taxonomy_id,其中tr.object_id在(215)中,tt.taxonomy在('category')中按tr.term_-Taxonomonomy_-id ASC排序;
0.1259[ms]从wp_帖子中选择p.*作为p,其中p.post_日期<'2011-06-07 20:40:34',p.post_类型='post',p.post_状态='publish'顺序按p.post_日期描述限制1;
0.0758[ms]从wp_术语中选择t.*,tt.*作为tt.term_id=t.term_id内部连接wp_term_关系作为tr.term_分类法上的tr.term_id=tt.term_分类法上的tt.TAXINORY('category')和tr.object_id按t.name ASC的顺序排列;
0.0651[ms]从wp_文章中选择p.*作为p,其中p.post_日期>'2011-06-07 20:40:34',p.post_类型='post',p.post_状态='publish'订单按p.post_日期ASC限制1;
0.0849[ms]从wp_术语中选择t.*,tt.*作为tt.term_id=t.term_id内部连接wp_term_关系作为tr.term_分类法上的tr.term_id=tt.term_分类法中的tt.TAXINORY IN('category')和tr.object_id(251)按t.name ASC排序;

此新信息是否说明了可能发生的情况?

您正在寻找的所有功能目前都在wordpress core中提供-无需添加您自己的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
}
(更多信息:)

在page.php或其他主题文件中:

<?php echo get_the_post_thumbnail($page->ID, 'custom-size'); ?>

(更多信息:)


现在将图像添加到“设置特色图像”下的帖子或页面中,并跳过使用自定义字段和post_get_meta。

我对imagemagick几乎没有经验,但我使用WordPress核心功能调整大小时也遇到过类似情况,它会影响添加的新图像,但不会影响旧图像,在新图像大小代码之前添加

有一个很棒的叫做“重新生成缩略图”的实用插件,它帮我解决了这个问题

你可以在这里的wordpress codex中找到它


。。。你在每个页面上都运行imagemagick?至少检查文件是否已经存在!检查文件是否存在是第二阶段,在代码正常工作之前,这样做没有多大意义。能否在
exec
之前添加
echo$convert
,以便我们可以看到您执行的命令与我们期望的相符?也,因此,我们可以看到该命令被调用了多少次以及使用了哪些文件?我已经添加了这一行,并可以看到下面的“/usr/bin/convert-fuzz 1%-trim-resize560x image1.jpg/home/sites/public_html/mysite/wp content/themes/myteme/images/image1.jpg”-在我所能看到的范围内只运行一次,但在images文件夹中我仍然会结束对于image1.jpg和image2.jpgNot,不确定这是否是一个问题,但您不应该像这样调用get_post_meta,$imagefile=get_post_meta($post->ID,'image_url',true);我希望是,但不是。为了这篇文章的目的,我简化了这个过程,但最终的代码不仅仅是调整图像大小。我把它漏掉了,因为它与手头的问题无关。。。看来我们需要