Превью при переносе сайта с DLE на Wordpress

H
На сайте с 22.06.2015
Offline
5
658

Все новости сайта полностью перенесены, но возникла проблема с превью. По умолчанию изображения стоят только в теле текста, но в качестве превью не встали.

Новостей очень много, сделать все ручками - убить минимум месяц по 6 часов в день.

Может можно каким-то образом перенести и назначить превью для материалов с DLE?

altezzik
На сайте с 06.11.2011
Offline
247
#1

Auto post thumbnails. Плагин такой.

virtuozo
На сайте с 05.04.2012
Offline
34
#2

Можно без плагина. В качестве основы для превью будет использоваться первое изображение из статьи. В файл темы functions.php вставляете код:

function catch_that_image() {

global $post, $posts;

$first_img = '';

ob_start();

ob_end_clean();

$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);

$first_img = $matches [1] [0];

if(empty($first_img)){ //Defines a default image

$first_img = "/images/noimage.jpg";

}

return $first_img;

}

В том месте где должна выводиться превьюшка, вставляете вот это:

echo catch_that_image();

SeVlad
На сайте с 03.11.2008
Offline
1609
#3
virtuozo:
В файл темы functions.php вставляете код

и имеем доп. не нужную нагрузку при каждом вызове поста...

virtuozo, код в форум вставляй в ббкод [code][/code]

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
virtuozo
На сайте с 05.04.2012
Offline
34
#4
SeVlad:
и имеем доп. не нужную нагрузку при каждом вызове поста...

virtuozo, код в форум вставляй в ббкод [code][/code]

Спасибо за подсказку, в следующий раз буду знать.

Что касается дополнительной нагрузки - плагин делает абсолютно то же самое, с той же нагрузкой.

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
virtuozo:
Что касается дополнительной нагрузки - плагин делает абсолютно то же самое, с той же нагрузкой.

Плагин отработает один раз (пропишет в базу), а тот код - при каждом вызове страницы.

R
На сайте с 20.02.2015
Offline
59
#6

altezzik, хороший плагин, не знал о нем..

Раньше приходилось так делать:


<?php
$wp_root = $_SERVER['DOCUMENT_ROOT'];
require_once($wp_root."/wp-load.php");
require_once(ABSPATH.WPINC."/post.php");

define('db_host', "localhost");
define('db_user', "root");
define('db_pass', "");
define('db_table', "");
define('db_charset', "utf8");

set_time_limit(0);

$db = mysql_connect(db_host, db_user, db_pass);
mysql_select_db(db_table, $db);
mysql_query("set names '".db_charset."'");


$sql = mysql_query("select * from `wp_posts`");
while ($row = mysql_fetch_assoc($sql)) {


$parent_post_id = $row['ID'];
$post_content = $row['post_content'];
if (!preg_match("#<img[^>]+src=[\"']?http://([^/]+)/([^\"']+)#i", $post_content, $match))
continue;

$host = strtolower($match[1]);
if (strcmp(strtolower($_SERVER['HTTP_HOST']), $host) !== 0)
continue;

$pinfo = pathinfo($match[2]);
$filename = $wp_root."/".$match[2];

$filetype = wp_check_filetype(basename($filename), null);
$attachment = array(
'guid' => "http://".$host."/".$match[2],
'post_mime_type' => $filetype['type'],
'post_title' => $pinfo['filename'],
'post_content' => '',
'post_status' => 'inherit'
);


$attach_id = wp_insert_attachment($attachment, $filename, $parent_post_id);

require_once(ABSPATH . 'wp-admin/includes/image.php');

$attach_data = wp_generate_attachment_metadata($attach_id, $filename);
wp_update_attachment_metadata($attach_id, $attach_data);
set_post_thumbnail($parent_post_id, $attach_id);

echo("<pre>add attach to post_id: {$parent_post_id}</pre>");
flush();
}
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий