2016-05-07 21 views
0

Ich habe eine schlechte Entscheidung früh in den Prozess des Aufbaus einer Wordpress-Website gemacht, und dabei machte meine Arbeit sehr mühsam, um es zu beheben.Javascript Taste href Injektion

Grundsätzlich habe ich eine Website mit mehr als 1300 Seiten gefüllt, und auf etwa 800 von ihnen sind eine Schaltfläche, die keine Verbindung zu irgendetwas, und seine auf einem WYSIWYG-Editor, so dass es buchstäblich einzigartig für jede Seite. Die helle Seite? Sie alle teilen die gleichen Klassen. Also ich dachte ich in der einen Tag, um die Klassen Ziel könnte mit der Taste zugeordnet ist, und das ist, was ich habe:

<script> 
document.getElementByClassName('et_pb_button et_pb_button_0 et_pb_module et_pb_bg_layout_light').href = "www.example.org/contact/"; 
</script> 

ich dies in die footer.php Datei in Mühe gegeben habe, es zu sein, auf jeder Seite laufen, aber es scheint nicht zu funktionieren. Hab ich hier irgendwas verpasst?

Ich bin nicht gegen andere Lösungen mit PHP oder JQuery, ich brauche nur diese Schaltfläche, um eine Seite zu verlinken, anstatt eine streunende #.

+0

Ich vermute, Sie müssten es in etwas einwickeln, um tatsächlich zu laufen, sobald die Seite gerendert hat - window.onload = function() {// Ihr Code} – dmoo

+0

Sie fehlen die s in getElementsByClassName – Damon

+0

Ich habe beide Vorschläge ausprobiert , aber immer noch nicht reagiert :( – Zaeo

Antwort

0

WYSIWYG-Editoren speichern diese Schaltfläche auf eine bestimmte Weise. Ich würde empfehlen, kein Skript auf jeder Seite zu setzen, sondern nur ein kleines PHP-Skript erstellen, das Ihre Datenbank abfragt und den Wert mit der Magie einer SQL-Abfrage aktualisiert.

Erstellen Sie eine Verbindung zu Ihrer Datenbank. Wählen Sie die entsprechenden Zeilen aus der Datenbank aus. Suchen Sie eine Regex, die der Schaltfläche entspricht, und verwenden Sie dann preg_replace(..), um diese Schaltfläche durch die Arbeitsschaltfläche zu ersetzen. Stellen Sie sicher, dass die Regex nicht übereinstimmt. Aktualisieren Sie den Wert und fahren Sie fort.

Wenn das Skript abgelaufen ist, können Sie es erneut ausführen, da die Regex nicht mehr mit den Schaltflächen übereinstimmt, die Sie bereits geändert haben.

Es ist ein bisschen eine schmutzige Lösung, aber viel einfacher als das manuelle Bearbeiten all dieser Seiten und viel sauberer als das Ausführen eines Skripts auf jeder Seite, nur weil Sie einen Fehler gemacht haben.

+0

ich diese nach der Javascript-Funktion Methode versuchen würde, war ich die Erlaubnis verweigert, diese Methode zu nutzen, ohne dass die JavaScript-Methode zu versuchen. – Zaeo

0

können Sie versuchen, Attribut wie

$ zum Hinzufügen attr ("href", "www.example.org/contact/") ('et_pb_button.et_pb_button_0.et_pb_module.et_pb_bg_layout_light..');

+0

Wie würde ich die Abfrage formatiert? ' ' ? Ich bin ein kompletter Javascript Anfänger, also tut mir leid, vor der Zeit. – Zaeo