[WordPress] rommel uit veld van wp_opties verwijderen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Buur75
  • Registratie: December 2006
  • Laatst online: 10-04 15:21
Ik ben aan een website aan het werken waar men tegen de adviezen in nogal met veel verschillende plug-ins heeft lopen rommelen (installeren, verwijderen, aan- en uitzetten, enz). Nu is de situatie zo dat er in de wp_options tabel bij de entry met alle instellingen van het gebruikte thema een stukje PHP-code terecht is gekomen, dat nu onderaan elke pagina, nog net voor het sluiten van de </body>-tag, tussen <script>-tags wordt gezet. Afgezien van dat dit natuurlijk nooit kan werken, is dit stuk code ook helemaal niet nodig, ook niet als het in PHP zou werken, en het geeft nu dus uiteraard een JavaScipt-error.

Ik wil dit er uit, maar ik weet niet hoe. Ik kan het namelijk niet rechtstreeks in de tabel aanpassen:

Er wordt gebruik gemaakt van het thema OceanWP. De database entry is:

option_idoption_nameoption_valueautoload
123theme_mods_oceanwp(JSON string met opties)yes

De data in de wp_options tabel bevat data in een JSON-formaat, ik weet niet precies hoe dat werkt, maar ik zie het stuk code daar wel letterlijk instaan, tussen andere opgeslagen opties:
code:
1
s:534:"//verwijdert zoomeffect op producten\nfunction remove_image_zoom_support() {\n    remove_theme_support( \'wc-product-gallery-zoom\' );\n}\nadd_action( \'wp\', \'remove_image_zoom_support\', 100 );\n\n\n//verandert de tekst op de order received pagina\nadd_filter(\'woocommerce_thankyou_order_received_text\', \'woo_change_order_received_text\', 10, 2 );\nfunction woo_change_order_received_text( $str, $order ) {\n    $new_str = \'Bedankt voor uw bestelling. We nemen binnen 2 werkdagen  contact met u op om een dag in te plannen.\';\n    return $new_str;\n}";

Dat stuk tussen de aanhalingstekens is precies wat nu onderaan de website in de code verschijnt tussen <script>-tags. Als ik in dit databaseveld dit stuk code er tussenuit haal, zijn alle opties/modificaties die aan het thema zijn gedaan weer gereset naar default en zijn alle instellingen dus weg. En dat terwijl ik naar mijn idee maar 1 instelling heb verwijderd.

Ik vermoed dat dit een restant is van een instelling van een oude plugin. Ik dacht de plugin 'code-snippets' als dader aan te kunnen wijzen, omdat ik een ongebruikte tabel "snippets" vond waar ook exact dezelfde code vond zoals die in die options tabel staat. Ik heb die plugin opnieuw geïnstalleerd, en vervolgens op de juiste manier weer gedeïnstalleerd, zodat de snippets-tabel netjes werd verwijderd (zoals het hoort), maar hiermee was de code uit de options-tabel nog niet weg.

Het kan ook zijn dat iemand ergens een stuk PHP-code heeft ingevoerd in een veld dat bedoeld was voor custom javascript, maar als dat het geval zou zijn, dan zou ik dat toch ergens anders in de database moeten kunnen vinden, of op de theme-pagina (customizer) maar dat is niet zo.

Hoe verwijder ik dit stuk uit mijn options-tabel zodat het niet meer op de site verschijnt?

Beste antwoord (via Buur75 op 15-01-2021 17:05)


  • Josk79
  • Registratie: September 2013
  • Laatst online: 12:59
Die 534 is de lengte van de string die erop volgt. Als je hem leegt moet je dus s:0 doen.

Je kunt beter in een php-scriptje de setting deserializen, aanpassen en weer serializen. Het resultaat plak je in de tabel.

[ Voor 38% gewijzigd door Josk79 op 13-01-2021 23:20 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
code:
1
s:534:
is geen JSON, maar een serialized PHP string.
Ondanks dat dat verboden zou moeten zijn (exploits in overvloed), kan je dat niet zomaar editen als je niet weet wat je doet.

Kopieer de waarde van het db veld en doe eens:
PHP:
1
print_r(unserialize('de data'));

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Het is inderdaad serialized. Plemp het resultaat van serialize('') in plaats van het stuk uit je openingspost en je hebt een prachtige lege string.

offtopic:
Ik wil niet weten hoe PHP code ooit op die random plek gekomen is. Nee, echt niet.

[ Voor 24% gewijzigd door Voutloos op 13-01-2021 22:45 ]

{signature}


Acties:
  • 0 Henk 'm!

  • Buur75
  • Registratie: December 2006
  • Laatst online: 10-04 15:21
Voutloos schreef op woensdag 13 januari 2021 @ 22:43:
Het is inderdaad serialized. Plemp het resultaat van serialize('') in plaats van het stuk uit je openingspost en je hebt een prachtige lege string.
Ja en dan ben ik al mijn andere opties kwijt? Dat is niet wat ik wil bereiken.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
In je startpost staat 1 lange string die je uit de hele brei gevist hebt toch? Mooi, zet je de lege geserializete string er voor in de plaats in de brei.

En uiteraard bewaar je het hele origineel voordat je random advies opvolgt terwijl je er zelf niets van snapt. Toch? Kan je ook niets kwijtraken. :)

{signature}


Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • Josk79
  • Registratie: September 2013
  • Laatst online: 12:59
Die 534 is de lengte van de string die erop volgt. Als je hem leegt moet je dus s:0 doen.

Je kunt beter in een php-scriptje de setting deserializen, aanpassen en weer serializen. Het resultaat plak je in de tabel.

[ Voor 38% gewijzigd door Josk79 op 13-01-2021 23:20 ]


Acties:
  • +1 Henk 'm!

  • Buur75
  • Registratie: December 2006
  • Laatst online: 10-04 15:21
Ik weet niet of het gebruikelijk is, maar bij deze iedereen bedankt voor het meedenken. Met het concrete antwoord van Josk79 was ik het snelste/makkelijkste geholpen!
Rest mij nog de taak om uit te zoeken waar deze troep vandaan komt, maar dat is een ander verhaal. De error komt niet meer voor op de website. Prettig weekend!
Pagina: 1