22.12.2020, 00:33 | #1 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,163
Получил(а) "Спасибо": 1,522
Нарушения: 0/0 (0)
Репутация: 969601
|
Регулярка: подставить в произвольное поле первую строку
По регурным выражениям нужно целый раздел запилить: форум обрастет тоннами низкочастотки >8)
В чем боль: В вордпрессе для выборки записей нужно создать произвольные поля и скопировать в них первую строку из соответствующих post_content. Вот таким запросом создаю поля и подставляю в них, например, заголовок записи: INSERT INTO wp_postmeta( post_id, meta_key, meta_value ) SELECT wp_posts.ID, 'nazvanieproizvpolya', post_title FROM wp_posts WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' AND wp_posts.post_title LIKE '%Кусок текста для отбора записей%' Собственно: как изменить запрос, чтобы в это произвольное поле записать значение первой строки из post_content? |
22.12.2020, 14:38 | #2 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
Re: Регулярка: подставить в произвольное поле первую строку
Вот тут показали как регулярки использовать:
https://se.guru/showthread.php?t=1805 Там же, человек столкнулся с замедлением серьезным в них, пробуйте у себя. Сама ваша регулярка будет такой: ^.*?$ |
Сказали спасибо: |
22.12.2020, 15:22 | #3 |
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
Re: Регулярка: подставить в произвольное поле первую строку
Я каким-то нюхом чую, что здесь проблема молотка.
|
22.12.2020, 15:40 | #4 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,163
Получил(а) "Спасибо": 1,522
Нарушения: 0/0 (0)
Репутация: 969601
|
Re: Регулярка: подставить в произвольное поле первую строку
Саму конструкцию уже использовал. В указанном виде работала. Добавляла название записи в новосозданное метаполе.
При подстановке ^.*?$ ругается на строку: SELECT wp_posts.ID, 'nazvanieproizvpolya', ^.*?$ Может, не заковычил что-нибудь? #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '^.*?$ |
22.12.2020, 18:19 | #5 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
Re: Регулярка: подставить в произвольное поле первую строку
wzp, топик который я дал посмотрите, вы должны использовать это выражение в REGEXP функции mysql.
|
3 пользователя(ей) сказали cпасибо: |
22.12.2020, 19:15 | #6 |
Дед
Профессор
Регистрация: 21.06.2020
Адрес: Ленинград
Сообщений: 514
Сказал(а) спасибо: 3,870
Получил(а) "Спасибо": 2,093
Нарушения: 0/0 (0)
Репутация: 746638
|
Re: Регулярка: подставить в произвольное поле первую строку
|
23.12.2020, 02:12 | #7 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,163
Получил(а) "Спасибо": 1,522
Нарушения: 0/0 (0)
Репутация: 969601
|
Re: Регулярка: подставить в произвольное поле первую строку
|
Сказали спасибо: |
23.12.2020, 03:06 | #8 |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,163
Получил(а) "Спасибо": 1,522
Нарушения: 0/0 (0)
Репутация: 969601
|
Re: Регулярка: подставить в произвольное поле первую строку
Дошел до такой второй строки в запросе:
SELECT wp_posts.ID, 'pervayastroka', post_content REGEXP '^.*?$' Поля создает, но во все нули подставляет |
23.12.2020, 13:39 | #9 |
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
Re: Регулярка: подставить в произвольное поле первую строку
wzp, вам надо UPDATE а не select. И в нем:
UPDATE table_name SET pervayastroka = post_content REGEXP '^.*?$' WHERE ... Примерно так, но надо проверять. |
Сказали спасибо: |
24.12.2020, 01:51 | #10 | |
Везде Бесы
Доцент
Регистрация: 21.06.2020
Сообщений: 338
Сказал(а) спасибо: 2,163
Получил(а) "Спасибо": 1,522
Нарушения: 0/0 (0)
Репутация: 969601
|
Re: Регулярка: подставить в произвольное поле первую строку
Цитата:
Тут же ж главная проблема: post_content в таблице wp_posts, а meta_key, meta_value в таблице wp_postmeta. Вот эта вот штука wp_posts.ID в запросе, как я понимаю, их связывает. Вот запрос без регулярки, который подставляет туда куда нужно весь пост целиком: INSERT INTO wp_postmeta( post_id, meta_key, meta_value ) SELECT wp_posts.ID, 'pervayastroka', post_content FROM wp_posts WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' AND wp_posts.post_title LIKE '%Кусок текста для отбора записей%' Замена post_content на post_content REGEXP '^.*?$' дает вместо поста нули. Трабла где-то в синтаксисе? |
|