Fix image fullwidth toggle [MAILPOET-1365]
Prevent WordPress $content_width global to override mailpoet_image_size when calling wp_get_attachment_image_src() in ACL generated posts.
This commit is contained in:
@@ -5,6 +5,8 @@ namespace MailPoet\Config;
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
class Env {
|
||||
const NEWSLETTER_CONTENT_WIDTH = 1320;
|
||||
|
||||
static $version;
|
||||
static $plugin_name;
|
||||
static $plugin_path;
|
||||
|
@@ -213,7 +213,7 @@ class Initializer {
|
||||
}
|
||||
|
||||
function setupImages() {
|
||||
add_image_size('mailpoet_newsletter_max', 1320);
|
||||
add_image_size('mailpoet_newsletter_max', Env::NEWSLETTER_CONTENT_WIDTH);
|
||||
}
|
||||
|
||||
function setupChangelog() {
|
||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Newsletter\Editor;
|
||||
use MailPoet\Newsletter\Editor\PostContentManager;
|
||||
use MailPoet\Newsletter\Editor\MetaInformationManager;
|
||||
use MailPoet\Newsletter\Editor\StructureTransformer;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
@@ -68,14 +69,10 @@ class PostTransformer {
|
||||
}
|
||||
|
||||
private function getFeaturedImage($post_id, $post_title, $image_full_width) {
|
||||
|
||||
if(has_post_thumbnail($post_id)) {
|
||||
$thumbnail_id = get_post_thumbnail_id($post_id);
|
||||
|
||||
// get attachment data (src, width, height)
|
||||
$image_info = wp_get_attachment_image_src(
|
||||
$thumbnail_id,
|
||||
'mailpoet_newsletter_max'
|
||||
);
|
||||
$image_info = WPFunctions::getImageInfo($thumbnail_id);
|
||||
|
||||
// get alt text
|
||||
$alt_text = trim(strip_tags(get_post_meta(
|
||||
|
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
namespace MailPoet\WP;
|
||||
|
||||
use Mailpoet\Config\Env;
|
||||
|
||||
class Functions {
|
||||
static function wpRemotePost() {
|
||||
return self::callWithFallback('wp_remote_post', func_get_args());
|
||||
@@ -33,4 +35,23 @@ class Functions {
|
||||
}
|
||||
return call_user_func_array($func, $args);
|
||||
}
|
||||
|
||||
static function getImageInfo($id) {
|
||||
/*
|
||||
* In some cases wp_get_attachment_image_src ignore the second parameter
|
||||
* and use global variable $content_width value instead.
|
||||
* By overriding it ourselves when ensure a constant behaviour regardless
|
||||
* of the user setup.
|
||||
*
|
||||
* https://mailpoet.atlassian.net/browse/MAILPOET-1365
|
||||
*/
|
||||
global $content_width; // default is NULL
|
||||
|
||||
$content_width_copy = $content_width;
|
||||
$content_width = Env::NEWSLETTER_CONTENT_WIDTH;
|
||||
$image_info = wp_get_attachment_image_src($id, 'mailpoet_newsletter_max');
|
||||
$content_width = $content_width_copy;
|
||||
|
||||
return $image_info;
|
||||
}
|
||||
}
|
BIN
tests/_data/test-image.jpg
Normal file
BIN
tests/_data/test-image.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
63
tests/unit/WP/FunctionsTest.php
Normal file
63
tests/unit/WP/FunctionsTest.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
namespace MailPoet\Test\WP;
|
||||
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoet\Config\Env;
|
||||
|
||||
class FunctionsTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
global $content_width;
|
||||
$this->_content_width = $content_width;
|
||||
$content_width = 150;
|
||||
}
|
||||
|
||||
function makeAttachment($upload, $parent_post_id = 0) {
|
||||
$type = '';
|
||||
if(!empty($upload['type'])) {
|
||||
$type = $upload['type'];
|
||||
} else {
|
||||
$mime = wp_check_filetype($upload['file']);
|
||||
if ($mime)
|
||||
$type = $mime['type'];
|
||||
}
|
||||
|
||||
$attachment = array(
|
||||
'post_title' => basename($upload['file']),
|
||||
'post_content' => '',
|
||||
'post_type' => 'attachment',
|
||||
'post_parent' => $parent_post_id,
|
||||
'post_mime_type' => $type,
|
||||
'guid' => $upload['url'],
|
||||
);
|
||||
|
||||
// Save the data
|
||||
$id = wp_insert_attachment($attachment, $upload['file'], $parent_post_id);
|
||||
$metadata = wp_generate_attachment_metadata($id, $upload['file']);
|
||||
wp_update_attachment_metadata($id, $metadata);
|
||||
|
||||
return $this->ids[] = $id;
|
||||
}
|
||||
|
||||
function testItCanGetImageInfo() {
|
||||
expect(
|
||||
function_exists('wp_generate_attachment_metadata')
|
||||
)->true();
|
||||
|
||||
$filename = 'tests/_data/test-image.jpg';
|
||||
$contents = file_get_contents($filename);
|
||||
|
||||
$upload = wp_upload_bits(basename($filename), null, $contents);
|
||||
$id = $this->makeAttachment($upload);
|
||||
expect($id)->notEmpty();
|
||||
|
||||
$image = WPFunctions::getImageInfo($id);
|
||||
expect($image[1])->equals(Env::NEWSLETTER_CONTENT_WIDTH);
|
||||
|
||||
wp_delete_attachment($id, $force_delete = true);
|
||||
}
|
||||
|
||||
function _after() {
|
||||
global $content_width;
|
||||
$content_width = $this->_content_width;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user