Suchen und entfernen Sie spezifischen Shortcode von allen Posts

Frage

Gibt es eine Möglichkeit, einen bestimmten [print_me] zu entfernen, sagen Sie [print_me] von allen Posts, wo es in einer Aufnahme erscheint. Und ich meine nicht, es zu maskieren oder zu filtern, damit es nicht post_content , solange es im post_content . Ich will, dass es GONE GONE.

Versuche so weit …

Bisher habe ich phpMyAdmin benutzt, ich habe eine Abfrage für alle post_content , die in der Tabelle wp_posts und es zeigt alle Posts an, nach denen ich gesucht habe, aber es gibt zu viele, um sie einzeln zu behandeln. Ich führte eine Abfrage zum Suchen / Ersetzen der Ergebnisse durch und versuchte, sie durch "" (nichts) zu ersetzen, aber während die Abfrage erfolgreich ausgeführt wurde, sah ich, dass die Shortcodes nicht mehr angezeigt wurden. Ich bin mir also nicht sicher, ob ich etwas verpasst habe .

Hier ist die Abfrage, die ich verwendet habe, um sie zu finden:

 SELECT * FROM `wp_posts` WHERE `post_content` LIKE '%[print_me]%' 

und ich bekomme 111 Datensätze. Aber dann benutze ich das gleiche Werkzeug, um zu suchen und zu ersetzen:

Ihre SQL-Abfrage wurde erfolgreich ausgeführt

db1357924680 . wp_posts SET post_content = ERSETZEN ( post_content , ‘% [print_me]%’, ‘%%’) WHERE post_content LIKE ‘%% [print_me] %%’ COLLATE utf8_bin

Aber wenn du nachschaust, sind sie alle noch da. Ich hoffe also, dass jemand einen besseren oder richtigen Weg kennt, dies zu tun und zu teilen. Wenn ich auf dem richtigen Weg bin, wäre ich dankbar, wenn ich herausfinden könnte, warum es nicht wie erwartet funktioniert. TIA.

Auflösung (dank @TheDeadMedic)

Mit den Korrekturen meiner ursprünglichen SQL-Abfrage (wie folgt und in der ursprünglichen Antwort gefunden) funktionierte es einwandfrei und ich erreichte, was ich brauchte, danke.

UPDATE db1357924680.wp_posts SET post_content = ERSETZEN (post_content, ‘[print_me]’, ”) WHERE post_content LIKE ‘% [print_me]%’


Geschichte (tl / rl)

Ich habe schon seit einiger Zeit ein Plugin benutzt, das auf JEDEM Post und jeder Seite etwas erscheinen lässt oder du könntest den Shortcode nur dann einfügen, wenn du es für diesen Inhalt für richtig hältst.

Nach etwa 2 Jahren gab ich es jedoch zugunsten einer umfassenderen Lösung auf, die einige andere functionen bereitstellte, die ich zusätzlich einbauen wollte.

Ich habe das Plugin deaktiviert, aber jetzt steht das Problem, dass diese Shortcodes als normaler alter Text gedruckt werden, und das muss ich auflösen.

Einige Umgebungs- / Systeminformationen: PHP / Linux / WP_4.5.1 / SQL_5.1.73 / PMA_4.1.14.8

Solutions Collecting From Web of "Suchen und entfernen Sie spezifischen Shortcode von allen Posts"

Für die dauerhafte Lösung ist Ihre SQL-Abfrage etwas aus – Sie benötigen:

 UPDATE db1357924680.wp_posts SET post_content = REPLACE( post_content, '[print_me]', '' ) WHERE post_content LIKE '%[print_me]%' 

MySQL ersetzt Beispiel

Es gibt einen einfacheren Weg, dies zu tun:

 add_filter( 'the_content', 'my_post_content_remove_shortcodes', 0 ); function my_post_content_remove_shortcodes( $content ) { /* Create an array of all the shortcode tags. */ $shortcode_tags = array( 'shortcode_1', 'shortcode_2', 'shortcode_3' ); /* Loop through the shortcodes and remove them. */ foreach ( $shortcode_tags as $shortcode_tag ) remove_shortcode( $shortcode_tag ); /* Return the post content. */ return $content; } 

Sie können dies in Ihre functionsdatei einfügen.

Quelle: http://justintadlock.com/archives/2013/01/08/disallow-specific-shortcodes-in-post-content

–bearbeiten–

Anstatt Ihre MySQL-Einträge zu durchsuchen, um alles zu entfernen, können Sie die functionalität des Shortcodes durch Ihre functionsdatei “entfernen”.

Der folgende Code wird durch alle Ihre Inhalte filtern und bestimmte Shortcodes entfernen, die Sie an dem als shortcode_1 usw. markierten Ort shortcode_1 .

Wie Mark sagte: Das ist nicht ganz das, wonach Sie gefragt haben, aber Sie werden ähnliche Ergebnisse erzielen, wenn Sie Schwierigkeiten haben, etwas anderes zu finden.

Ich hoffe es hilft!