Всем привет.
Установил дополнение Prime Image Uploader. Считаю, было бы неплохо сделать выбор размера изображения (миниатюра, средний, большой, оригинал).
Доп. Magnific Popup Recall тоже установил, только так и не понял, где он меняет изображения и как его настраивать.
И еще, форум не дает выложить просто картинку без текста (он считает, что это пустое сообщение).
Приходится что-то придумывать, вставлять смайлы и т.п.
доп не имеет настроек и делает все автоматически. Давайте ссылку на проблему
Ссылку дать не на что) Я бы не сказал что это проблема, скорее предложение:
1. Дать возможность при загрузке изображений на форум указывать их размер (оригинал, миниатюра, средний, большой)
2. Дать возможность постить просто изображения без текста
3. Дать возможность вставлять изображения вперемешку с текстом, а не только внизу под текстом.
Было бы круто. Лично я готов за это доплатить дополнительно. Думаю, другие вебмастера тоже)
пункт 1 - возможно рассмотрю позже
пункты 2 и 3 имеют массу подводных камней, которые делают реализацию затруднительной, не так давно обсуждали возможность постить изображения в произвольное место визуального редактора обычной публикации без использования медиабиблиотеки, там я указывал на проблему подобного подхода, тут та же история - медиабиблиотека загруженных к посту изображений должна быть, тогда пользователь сможет управлять этими изображениями, а админ сможет контролировать загрузку изображений установленными лимитами, вот выводимая галерея изображений и выполняет роль медиабиблиотеки только для одного сообщения.
По поводу ставки картинок:
Скрипт для вставки в любое место:
jQuery.fn.extend({
insertAtCaret: function(myValue) {
if (document.selection) {
this.focus();
sel = document.selection.createRange();
sel.html = myValue;
this.focus();
}
else if (this.selectionStart || this.selectionStart == '0') {
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
}
});
jQuery(document).on('click', '.piu-image-preview img', function(){
var img = jQuery(this).attr('src');
jQuery('.wp-editor-area').insertAtCaret('<img src="'+img+'">');
});
Код для фильтра контента и замены картинки на ту, что получилась после перемещения ее в медиабиблиотеку
function get_attachment_url_by_title( $title ) {
global $wpdb;
$attachments = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE guid LIKE '%$title%' AND post_type = 'attachment' ", OBJECT );
//print_r($attachments);
if ( $attachments ){
$attachment_url = $attachments[0]->guid;
}else{
return 'image-not-found';
}
return $attachment_url;
}
add_action('pfm_add_post','pfm_parse_img_after_add_post',999);
add_action('pfm_after_update_post','pfm_parse_img_after_add_post',999);
function pfm_parse_img_after_add_post($post_id) {
$dom=new DOMDocument();
$dom->loadHTML(pfm_get_post_content($post_id));
$imgs = $dom->getElementsByTagName('img');
foreach($imgs as $img){
$img_src = $img->getAttribute('src'); // will give you the src String
//do something here
$pathinfo = pathinfo($img_src);
$img_name = $pathinfo['filename'].'.'.$pathinfo['extension'];
$new_src = get_attachment_url_by_title($img_name);
$img->setAttribute('src',$new_src); // change your src= value
}
$args = array();
$args['post_content'] = $dom->saveHTML();
global $wpdb;
$result = $wpdb->update(
RCL_PREF.'pforum_posts',
$args,
array(
'post_id' => $post_id
)
);
}
Для упрощения что бы не использовать поиск LIKE %...% можно при перемещении картинки в библиотеку в поле, например, post_name писать сгенерированное имя файла.
Ну или может это натолкнет на другую реализацию, но думаю это реально