2012-01-09 18 views
2

2枚の画像を生成するワードプレスのスクリプト。このスクリプトは、実際にそれが離れて一つのことから、それは余分な画像を毎回、処理することを意図しているものを行います。コードは、それが作成されますのImageMagickと私はwordpressのカスタムフィールドに保存されているURLからの画像を処理するためのImageMagickを使用しています

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

余分な画像は、同じ1つの毎回あると私のポストのリストの最初の投稿です....以下である、イムそれは最初のポストが関係したりされていないされているかどうかわかりません。

私はそれが問題やワードプレスを引き起こしているImageMagickのであれば、私が使用していますImageMagickのコマンドは、私はワードプレスに傾いています本当に簡単ですもわかりませんよ。

誰もが何か示唆できますか?

UPDATE

私が遊んでてきたと、この問題が唯一のポストのカップルと発生するようことを見出しました。私は、SQLデータベースでチェックし、影響を受けていないと明らかに何かを見ることができないものとそれらを比較しました。

は物事私は地元のdevのサーバー上でこの設定を複製しても、見知らぬ人を作るためにUPDATEが、私はそれを複製することができません。すべてうまく動作します!私は私の共有ホスト上で同じことを行うならば、問題が戻ってきます。これは私に、どこかの設定があるはずだと思うようにしています。私は、次のコードは、それが正常に動作しない場合は共有ホストで

....

<?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は、ワードプレスget_post_metaコマンドによって生成されている私の元のコードに戻す場合私は余分なイメージを取得します。 BlackBoxのプラグインワードプレスを使用して

UPDATE 3 は、私は何が起こっているかについて、もう少し情報を見つけることができた、ログが私にこの情報を与える。..

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

...あなたはすべてのページビュー上でのImageMagickを実行していますか?少なくともファイルがすでに存在するかどうかを確認してください。 – ceejayoz

+0

ファイルが存在するかどうかを確認する段階は2段階ですが、コードが正常に動作するまでそれほど重要なことはありません。 – fightstarr20

+0

'exec'の前に' echo $ convert'を追加して、 'exec'-ingしているコマンドが期待どおりのものであることを確認できますか?また、コマンドが何回呼び出されているのか、どのファイルが何回表示されているのかを確認できます。 –

答えて

0

あなたが探している機能のすべては、ワードプレスのコアで現在利用可能です - あなた自身の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を使用してスキップします。

+0

私はそれがあったと思うが、そうではない。私はこの記事の目的のためにプロセスを単純化しましたが、最終的なコードはイメージのサイズを変更するだけではありません。私はそれを手にした問題に関連するものではないので、それを放棄した。 – fightstarr20

+0

ok gottcha ...あなたの実際のコードをもっと見る必要があるようです。また: "この問題は、いくつかの投稿でのみ発生するようです" - あなたは新しいWordpressのインストールと新しいテスト投稿を試してみましたか? – squarecandy

+0

私はそのルートを下って行くことになると思う、その本当に奇妙な、特定の投稿は、特定の余分な画像を作成します。私はそれの底に到達することはできません。私が上に掲示した更新コード3は、DBから2つの別個の投稿を要求しているが、理由はわからない。 – fightstarr20

1

私はimagemagickの経験はほとんどありませんが、WordPressのコア機能を使用してサイズを変更した場合、新しい画像サイズコードの前に追加された古い画像ではなく新しい画像に影響します。

あなたがここにワードプレスコーデックスでそれを見つけることができますそこに私のためにこれを整理「のサムネイルを再生成」と呼ばれる偉大な小さなユーティリティプラグインは、ある

http://wordpress.org/extend/plugins/regenerate-thumbnails/

関連する問題