SQL заявка за откриване на невалидни линкове в датабазата

Има ли такава SQL заявка, която да открива стари линкове от снимки, които дефакто вече са изтрити от сървъра, но линковете им да седят в датабазата и дават 404 грешка и да ги изтрие. Трябва ми заявка, която да изтрива публикации, в която няма нито една прикачена снимка.
 
Има ли такава SQL заявка, която да открива стари линкове от снимки, които дефакто вече са изтрити от сървъра, но линковете им да седят в датабазата и дават 404 грешка и да ги изтрие. Трябва ми заявка, която да изтрива публикации, в която няма нито една прикачена снимка.

Ами не, няма как.
С SQL завка може да вземеш пълния списък от снимки и след това със скрипт да провериш за всяка снимка дали съществува на конкретен домейн (дали дава грешка 404)
Скрипта е много лесен и бърз за писане.
Ако ти трябва помощ, драсни ми на лично.
 
Привет, защо не пробваш чрез това: https://www.screamingfrog.co.uk/seo-spider/
Има начин с Sql да се намерят линкове ако имаш обявен 404 еррор, и има още някой неща за отговор и какво връща, но само чрез Sql няма как да стане. Ако е за проекти, ползваш https://www.screamingfrog.co.uk/seo-spider/, работи добре.

Поздрави,
Станимир И
 
Благодаря ви за помощта, липсващите снимки успях да ги изкарам с плъгина Media Cleaner и ги пуснах да се изтрият, обаче сега остана другия проблем. Как да намеря публикации, които вече нямат прикачени снимки, защото искам да ги изтрия и тях.
 
С този SQL код изкарвам публикациите, които не съдържат снимки в себе си

SELECT * FROM wp_posts LEFT JOIN wp_postmeta ON
(wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = '_thumbnail_id' )
WHERE 1=1 AND (wp_postmeta.post_id IS NULL) AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID ORDER BY wp_posts.post_date


С какъв SQL код мога да изтрия тези изкараните, защото нямам опция за изтриване на тези в phpmyadmin
 
Последно редактирано:
  • Haha
Реакции: Sky
Тоя дето ти е казал как да ги селектнеш, да каже как да направиш и DELETE заявката.

... Макар че такива работи по принцип никога не трябва да се правят през SQL - има си API за тая работа.
 
Отказвам да повярвам че през 2020 все още има още хора които не знаят как да използват гугъл.
 
Привет, пробвай това: DELETE FROM wp_posts WHERE ID not in (select post_id as p from wp_postmeta where meta_key like "_thumbnail_id");
Но преди да пробвай, гледай да не затриеш важна информация, най-добре на тестова зона.

Поздрави,
Станимир И
 
Привет, пробвай това: DELETE FROM wp_posts WHERE ID not in (select post_id as p from wp_postmeta where meta_key like "_thumbnail_id");
Но преди да пробвай, гледай да не затриеш важна информация, най-добре на тестова зона.

Поздрави,
Станимир И
Станчо, след 15 години в бранша, стотици сайтове, 7473 клиента от форума това ли успя да измъдриш?
Та ти дори не можеш да си форматираш коментара....
 
Привет, пробвай това: DELETE FROM wp_posts WHERE ID not in (select post_id as p from wp_postmeta where meta_key like "_thumbnail_id");
Но преди да пробвай, гледай да не затриеш важна информация, най-добре на тестова зона.

Поздрави,
Станимир И
Видях откъде си го копнал това, ама поне трябваше да избереш нещо с повече лайкове.

То е ясно че не разбираш от WordPress, ама очевидно бъкел идея си нямаш и от SQL... Заявката има очебиен недостатък, дори за човек дето никога не е виждал ВП.
 
  • Like
Реакции: Sky
Ако някой има подобен проблем може с това да изтрие

DELETE w
FROM wp_posts w JOIN
(
SELECT wp1.ID
FROM wp_posts wp1
LEFT JOIN wp_postmeta wp2 ON wp1.ID = wp2.post_id AND wp2.meta_key = '_thumbnail_id'
WHERE wp2.post_id IS NULL
AND wp1.post_type = 'post'
AND (wp1.post_status = 'publish' OR wp1.post_status = 'private')
GROUP BY wp1.ID
) w2
ON w.ID = w2.ID
 
При изтриване на данни от базата трябва да се провери дали във wp_post няма записи с "parent", който да сочи към някой от изтритите постове. wp_post_meta, wp_term_relationships също е добре да се погледнат дали няма останали записи.
Поне за тези се сещам на първо време сигурно има и още.
Като цяло ако не познавам добре структурата на базата не бих се решил да трия директно от нея. не се знае какво може да се получи.
 
И това с тъмбнейл_ид няма ли да извади само постовете с featured image? За атачмънти (картинки вътре в контента) трябва да се търси по file_attachment или нещо от рода, забравих вече как се казваше..
 

Горе