X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Убрать пробелы из таблицы в базе данных wordpress
sosnovskij
sosnovskij
Topic Starter сообщение 13.9.2013, 14:46; Ответить: sosnovskij
Сообщение #1


Проблема значит следующая :). В некоторых постах сайта содержится несколько пробелов между словами вместо обычного одного. Можно ли убрать эти пробелы? Их обычно содержится 2 вместо 1, но бывает попадаются и 3, и 4, и 5 и так до где-то 10. Образовывались они неизвестным для меня методом :D.

CMS wordpress, имя таблицы wp_posts. Можно ли через phpmyadmin sql-запросом заменить эти многочисленные пробелы стандартным одним? Если да, то, соответственно, каким <_< . Не сможет ли это затронуть функциональность вывода постов. Грубо говоря, не нарушит это что-либо?


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 13.9.2013, 15:29; Ответить: fedornabilkin
Сообщение #2


UPDATE `table`
SET `field` = REPLACE(`field`, '  ', ' ');

Так как в мускуле нету поддержки регулярок при замене, то придется выполнять этот запрос до тех пор, пока он не вернет ноль строк. Можно написать на пхп цикл.
А еще можно сделать дамп, открыть его в нотпаде и заменить по регулярке.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sosnovskij
sosnovskij
Topic Starter сообщение 10.10.2013, 16:10; Ответить: sosnovskij
Сообщение #3


Лучше поздно, чем никогда :) Затянулось у меня с этим.

UPDATE `table`
SET `field` = REPLACE(`field`, '  ', ' ');


table - это название таблицы? В данном случае wp_posts
field - это поле? В данном случае post_content

Итого конечный запрос будет

UPDATE 'wp_posts'
SET `post_content` = REPLACE('post_content', '  ', ' ');


Верно? :)


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
c0ns0l3
c0ns0l3
сообщение 12.10.2013, 0:49; Ответить: c0ns0l3
Сообщение #4


Данный вариант уберет "3 пробела" на 1.
Тебе проще добавить хук на the_content который будет уже соответственно убирать пробелы тем же preg_replace, и если были замены обновлять данные в БД.
Могу помочь если хочешь :)

Но здесь может стать проблема в том, как ты вообще выводишь контент...
Используешь ли ты в теме функцию the_content, как ты ее используешь - в лупе, или нет... бо в данной функции используется хук без данных об ID поста и т.д.
С другой стороны, можно написать плагинчик на будущее, который будет перебирать все посты и делать замену регулярными выражениями...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
c0ns0l3
c0ns0l3
сообщение 12.10.2013, 2:17; Ответить: c0ns0l3
Сообщение #5


Подумал подумал.. и придумал...

Ситуация такова... в the_content функции, на выходе используется фильтр соответственно the_content... в который уже попадает обработанный контент поста соответственно... и нету упоминаний в аргументах о самом объекте поста...
Контент для этой функции генерит get_the_content... в ней да, есть все что нам надо, но разработчики не придумали использование хотя бы одного фильтра в данной функции, кроме обработки "тизера" ... НО если не указан ID или WP_Post в аргументах, то он берет его из глобала.. в который записываются данные во время WP_Loop.. следовательно мы можем просто повесить триггер на тот-же the_content и забирать с глобала объект WP_Post и над ним уже проводить свои грязные махинации :) Но тут тоже беда получится.. если ты используешь the_content($some_post->post_content) вне лупа, то на пост, получается наш триггер не сработает...

Собственно надо еще подумать...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 15.10.2013, 10:08; Ответить: fedornabilkin
Сообщение #6


Данный вариант уберет "3 пробела" на 1.

Если через запрос к бд, то надо именно заменять два пробела на один.
Если было 7 пробелов, сделали запрос - получилось 5 + (2 заменили на 1) = 6.
Итого с каждым проходом и выполнением запроса убирается один лишний пробел до тех пор, пока не останется один пробел.
Мне кажется меньше мороки :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sosnovskij
sosnovskij
Topic Starter сообщение 15.10.2013, 15:29; Ответить: sosnovskij
Сообщение #7


[member=c0ns0l3], мне в принципе 1 раз это нужно сделать и все, поэтому предпочтительнее вариант попроще :)

[member=fedornabilkin],
В окне sql запроса выполнил это

UPDATE 'wp_posts'
SET 'post_content' = REPLACE('post_content', '  ', ' ')


Вылезла ошибка

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wp_posts' SET 'post_content' = REPLACE('post_content', ' ', ' ')' at line 1


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 15.10.2013, 16:00; Ответить: matroskin8
Сообщение #8


В окне sql запроса выполнил это

UPDATE 'wp_posts'
SET 'post_content' = REPLACE('post_content', '  ', ' ')


Вылезла ошибка...

Попробуйте заменить одинарные кавычки - ', которыми обрамлены имена поля и таблицы, на обратные кавычки - `:
UPDATE `wp_posts`
SET `post_content` = REPLACE(`post_content`, '  ', ' ')
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sosnovskij
sosnovskij
Topic Starter сообщение 15.10.2013, 19:35; Ответить: sosnovskij
Сообщение #9


[member=matroskin8], поменял на обратные кавычки. Процесс пошел, но завис, а сайт стал выдавать "error establishing a database connection". Перезагрузил сервер. Посты, в которых были двойные пробелы заменились полностью на текст "post_content". Сейчас восстановил бэкап БД.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
c0ns0l3
c0ns0l3
сообщение 15.10.2013, 20:35; Ответить: c0ns0l3
Сообщение #10


UPDATE `wp_posts` posts
SET posts.`post_content` = REPLACE(posts.`post_content`, '  ', ' ') WHERE 1 =1

Давай так попробуем..

Хотя, у меня все получилось и так...
Прикрепленное изображение
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПродам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка.
18 Boymaster 11035 Сегодня, 12:04
автор: Omaxis
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6842 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 854 7.4.2024, 18:05
автор: Alex-777
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБезанкорный прогон по базе 1600 000 сайтов из DMOZ
44 aleggator 13748 10.3.2024, 18:29
автор: kuprum
Открытая тема (нет новых ответов) Перенос сайта на CMS Wordpress
8 freeax 4956 10.3.2024, 14:58
автор: freeax


 



RSS Текстовая версия Сейчас: 19.4.2024, 17:24
Дизайн