webentwicklung-frage-antwort-db.com.de

Suchen und Entfernen eines bestimmten Shortcodes aus allen Posts

Frage

Gibt es eine Möglichkeit, einen bestimmten Shortcode, z. B. [print_me], aus allen Posts zu entfernen, in denen er auf einmal angezeigt wird? Und ich meine nicht, dass es maskiert oder gefiltert wird, damit es nicht angezeigt wird, solange es im post_content bleibt. Ich will, dass es GEGANGEN ist.

Bisherige Versuche ...

Bisher habe ich phpMyAdmin verwendet. Ich habe eine Abfrage für den gesamten post_content ausgeführt, der in der Tabelle wp_posts angezeigt wird, und es werden alle Beiträge angezeigt, nach denen ich gesucht habe, aber es gibt zu viele, um sie einzeln zu bearbeiten. Ich habe eine Abfrage zum Suchen/Ersetzen von Updates für die Ergebnisse ausgeführt und versucht, sie durch "" (nichts) zu ersetzen. Während die Abfrage erfolgreich ausgeführt wurde, werden die Shortcodes jedoch nicht ausgeblendet. Daher bin ich mir nicht sicher, ob ich etwas übersehen habe.

Hier ist die Abfrage, mit der ich sie gefunden habe:

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

und ich bekomme 111 Platten. Aber wenn ich dann dasselbe Tool zum Suchen und Ersetzen benutze, erhalte ich:

Ihre SQL-Abfrage wurde erfolgreich ausgeführt

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

Aber wenn Sie nachsehen, sind sie alle noch da. SO Ich hoffe, dass jemand einen besseren oder angemesseneren Weg kennt und bereit ist zu teilen. Wenn ich auf dem richtigen Weg bin, würde ich mich über eine Hilfe freuen, um herauszufinden, 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 zu finden) hat es einwandfrei funktioniert und ich habe das erreicht, was ich brauchte, danke.

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


Geschichte (tl/rl)

Ich habe seit einiger Zeit ein Plugin verwendet, mit dem auf JEDEN Posts und Seiten etwas angezeigt werden kann, oder Sie können den Shortcode nur dann eingeben, wenn Sie der Meinung sind, dass er für diesen Inhalt geeignet ist.

Nach ungefähr 2 Jahren gab ich es jedoch zugunsten einer umfassenderen Lösung auf, die einige andere Funktionen bereitstellte, die ich zusätzlich integrieren wollte.

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

Einige Informationen zu Umgebung/System: PHP/Linux/WP_4.5.1/SQL_5.1.73/PMA_4.1.14.8

3
GµårÐïåñ

Für die permanente Lösung ist Ihre SQL-Abfrage geringfügig deaktiviert - Sie benötigen:

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

MySQL ersetzen Beispiel

6
TheDeadMedic

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 Ihrer Funktionsdatei ablegen.

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 Funktionalität des Shortcodes über Ihre Funktionsdatei "entfernen".

Der folgende Code filtert Ihren gesamten Inhalt und entfernt bestimmte Shortcodes, die Sie an der als shortcode_1 usw. gekennzeichneten Stelle angeben.

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

Ich hoffe es hilft!

5
Frits