WordPress как на ладони
wordpress jino

[РЕШЕНО] Как записать функцию в плагин?

Ответ

https://wp-kama.ru/function/add_filter

        function __construct(){

			add_filter( 'wp_generate_attachment_metadata', array( &$this, 'replace_uploaded_image'));
		}

		function replace_uploaded_image($image_data) {

Вопрос

Сваял небольшой код, который после работы плагина заносит дополнительные размеры в базу данных и переименовывает пару файлов

как этот код добавить в плагин ? этот код дополняет плагин и более ничего не делает.

add_filter('wp_generate_attachment_metadata','replace_uploaded_image');
function replace_uploaded_image($image_data) {

	$upload_dir            = wp_upload_dir();
	$image_name            = basename($image_data['file']);                  // имя из таблицы массива "name.jpg"

	$location_fils =  $upload_dir['path'] . '/' . $image_name . '.temp';     // адрес + имя + .temp

	// get the attributes of the source image
	list($imageWidth, $imageHeight, $imageType, $imageAttr) = getimagesize($location_fils);

	// there are different php functions depending on what type of image it is, so check the type
	switch($imageType) {
		//GIF
		case 1: 
			break;

		//JPG
		case 2:
			// заносим копию с -lq в базу данных
			$name_jpg = basename($image_data['file']);                      // name.jpg
			$name_lq_png = preg_replace("/\.jpg$/", "-lq.jpg", $name_jpg ); // name-lq.jpg

			$image_data['sizes']['as_original'] = Array(
				"file" => $name_lq_png,
				"width" => $imageWidth,   
				"height" => $imageHeight,  
				"mime-type" => "image/jpeg"
			); 

			break;

		//PNG
		case 3:

			// переименование псевдо оригинала в копию с именем -lq
			$name_png = basename($image_data['file']);                      // name.png
			$name_lq_png = preg_replace("/\.png$/", "-lq.png", $name_png ); // name-lq.png

			$image_location_old = $upload_dir['path'] . '/' . $name_png;    // site.com/name.png
			$image_location_new = $upload_dir['path'] . '/' . $name_lq_png; // site.com/name-lq.png

			rename($image_location_old, $image_location_new);               // name.png на name-lq.png
			rename($image_location_old.'.temp', $image_location_old);       // name.png.temp на name.png

			$image_data['sizes']['as_original'] = Array(
				"file" => $name_lq_png,
				"width" => $imageWidth,   
				"height" => $imageHeight, 
				"mime-type" => "image/jpeg"
			); 

			break;

	}

	return $image_data;
}
lifestar месяц назад

$this не надо передавать по ссылке

0
kolshix125 месяц назад

Нет ответов на этот вопрос.

На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.