Я новичок в PHP, поэтому пишу код, находя фрагменты кода и пытаясь собрать их вместе.
У меня есть код, который делает снимок экрана по URL-адресу, а затем загружает этот URL-адрес в медиатеку WordPress. URL-адрес изображения из медиафайла WordPress затем помещается в настраиваемое поле.
Следующий код работает, за исключением того, что код сохраняет изображение дважды.
function wpscreen($post_id) {
$test = "https://www.google.com/";
$testurl = 'https://s.wordpress.com/mshots/v1/' . $test . '?w=' . '211' . '&h=' . '172' . '.jpg';
$desc = get_the_title($post_id);
$new_image_url = media_sideload_image($testurl, $post_ID, $desc, $src = 'src' );
}
add_action( 'save_post', 'wpscreen' );
Я предполагаю, что это потому, что я вызываю переменную $new_image_url
во второй раз, но я не уверен, как иначе получить URL-адрес в моем настраиваемом поле.
Любая помощь горячо приветствуется.
РЕДАКТИРОВАТЬ Я сделал код проще, но изображение все равно загружается дважды.
РЕДАКТИРОВАТЬ 2 (Решение)
Видимо Save_post
запускается дважды (иногда / всегда?). Добавив следующий фрагмент кода в мой код, он работал нормально.
if ( ! ( wp_is_post_revision( $post_id) || wp_is_post_autosave( $post_id ) ) ) {
}
Спасибо за ваш ответ. Обе ваши точки верны (во-первых, числа являются переменной в реальном коде). Я думаю, что нашел решение своей проблемы, aparantly 'save_post' запускается дважды при сохранении. Поэтому добавляем проверку, чтобы увидеть, есть ли автосохранение / ревизия теперь, кажется, сохраняется только один раз
2 вопроса: Разве нельзя просто сделать
$test . '?w=211&h=172.jpg'
? Также не уверен, почему у вас$src = 'src'
. Разве это не должно быть просто'src'
?