Imagemagick и WordPress скрипт, генерирующий два изображения - PullRequest
2 голосов
/ 09 января 2012

Я использую imagemagick для обработки изображения с URL-адреса, сохраненного в настраиваемом поле 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; ?>

Дополнительное изображение, которое он создает, всегда повторяется и является первым сообщением в моем списке сообщений, я не уверен, связано ли это с первым сообщением или нет.

Я также не уверен, что именно imagemagick вызывает проблемы или wordpress, команды 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;

Эта новая информация проливает свет на то, что может происходить?

Ответы [ 2 ]

1 голос
/ 25 марта 2012

У меня небольшой опыт работы с imagemagick, но я сталкивался с подобной ситуацией, используя базовую функциональность WordPress для изменения размера, это повлияет на добавление новых изображений, но не старых изображений, добавленных до нового кода размера изображения.

Есть замечательный небольшой плагин утилит под названием "регенерировать эскизы", который разобрался со мной,

Вы можете найти его в кодексе WordPress здесь.

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

0 голосов
/ 25 января 2012

Все функции, которые вы ищете, в настоящее время доступны в ядре 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...