2016-03-28 11 views
1

Wir haben ein Wordpress-Thema (Zerif Pro) gekauft und bisher war ich nicht davon beeindruckt. Unser Team musste einiges an Hacker hinzufügen, damit sich die Website korrekt verhält, da das Thema zerbrechlich ist, Hardcode-Einstellungen, die konfigurierbar sein sollten und einige der Wordpress-Funktionen missbrauchen (im Idealfall würden wir dieses Thema herauswerfen und Themeisle für zukünftige Themen boykottieren wir sind an dieser Stelle mit der Website zu weit gegangen).Überschreiben Wordpress OpenGraph Metadaten und/oder wp_head

Eines der Dinge, die es missbraucht, ist die statische Titelseite. Das Theme erstellt in der Tat eine statische Titelseite, tut dies aber auf der Seite "Letzte Posts", anstatt es ordnungsgemäß auszuführen, wie es Wordpress erwarten würde. Das heißt, wenn wir in den Wordpress-Einstellungen die Option "Erste Seite zeigt eine statische Seite an" auswählen, wird das Thema durchbrochen. Aus diesem Grund haben wir die Hauptseite beibehalten und stattdessen eine Dummy-Seite erstellt, die die neuesten Beiträge enthält.

Das Problem jetzt ist jedoch, dass die Hauptseite, obwohl es ein Deckblatt ist, immer noch irgendwie denkt, dass es eine Blogseite ist, die zu einigen anderen Problemen führte (wie "teile diesen Beitrag" -Links auf, die wir sehen) habe über css versteckt) und in letzter Zeit die falsche OpenGraph-Information, worum es sich bei dieser Frage handelt.

Die Metadaten in das Deckblatt (das ist wirklich die letzte Posts Seite falsch von dem Thema in ein Deckblatt formatiert) entspricht der unserer letzten Post. Ich nehme an, dass es von wp_head() erzeugt wird, aber nicht finden kann, woher diese Metadaten stammen (das Thema scheint nicht zu überschreiben wp_head() und wir verwenden keine SEO-Plugins, die og Meta-Daten injizieren würden). An dieser Stelle sind hier die Lösungen Ich denke an:

  • Aufschalten wp_head() diese Daten auszuschließen (Ich bin nicht vertraut genug mit der Logik, dies zu tun)
  • die WP-Plattform Lassen irgendwie weiß, dass die Hauptseite kein Blogbeitrag ist (das verhindert, dass irrelevante OpenGraph-Daten aus dem letzten Blogpost gezogen werden, habe ich keine Ahnung, wie das geht)
  • Tweak das Thema, um seinen "statischen" Inhalt in einen anderen zu injizieren Seite statt auf der Seite mit den neuesten Standardposts, wo wir die Metadaten über Plugins kontrollieren könnten (auch hier keine Ahnung, wo diese Logik ausgeführt wird oder ob dieses Thema überhaupt kooperieren würde)
  • finden, wo die Opengraph Meta-Daten gefüllt wird und außer Kraft setzen es

Kann jemand vorschlagen, wie etwa die Lösung des Problems gehen (wenn Sie eine bessere Lösung als die 4 habe ich entweder von denen 4 über oder jede Führung erwähnt , Ich würde es begrüßen).Wenn es hilft, sind hier alle derzeit installierten Plug-In:

  • Kontaktformular
  • Einfachen Twitter Feed-Widget
  • Ausgewähltes Bild von URL
  • Google Analytics Dashboard WP
  • Beiträge in Seite an E-Mail
  • SendGrid
  • einfache benutzerdefinierte CSS
  • Social Share Buttons von Supsystic
  • TC Individuelle JavaScript
  • Typecase
  • Widget Wrangler
  • WP Client-Logo Karussell
  • WPide
+0

Zuerst müssen Sie in header.php oder Vorlage Teil, die sich auf Header, suchen, gibt es irgendeine Funktion außer wp_head, die erstellt? – Jevuska

+0

Es ruft 'wp_head()' und 'zerif_bottom_head_trigger()' direkt danach. Ich habe ein zusätzliches Element zwischen den beiden eingefügt, und so habe ich herausgefunden, dass die interessierenden Metadaten ('og: title',' og: description' usw.) von 'wp_head()' selbst generiert werden. Allerdings scheint das Thema selbst wp_head nicht zu definieren oder irgendwelche Aktionen hinzuzufügen, und die Vanille wp_head scheint nicht viel zu haben: https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-includes/allgemeine Vorlagephp # L2428 –

+1

Sie könnten wp_head mit dieser Funktion überprüfen, so können Sie sehen, welche Funktion diese og Meta-add_action auslösen kann ('wp', function() {global $ wp_filter; if (isset ($ wp_filter ['wp_head'])) {echo '

'; print_r($wp_filter['wp_head']); echo '
';}}); ' – Jevuska

Antwort

1

Diese Antwort wäre nicht möglich gewesen ohne Jevuska Hilfe, deren Kommentar erklärt, wie man bekomme den Inhalt von wp_head, etwas, worüber ich vorher überhaupt keine Ahnung hatte. Diese Schritte können verwendet werden, um jede unerwünschte Logik aus wp_head zu entfernen, nicht nur die og Logik, die mich gestört hat. Hier ist, was ich das Problem zu lösen habe:

  1. addiert der folgende Code functions.php, wie Jevuska vorgeschlagen:

    add_action('wp', function() { 
        global $wp_filter; 
        if (isset($wp_filter['wp_head'])) { 
         echo '<pre>'; 
         print_r($wp_filter['wp_head']); 
         echo '</pre>'; 
        } 
    }); 
    
  2. die Seite neu geladen eine riesige Müllkippe des Hash zu sehen wp_head verschiedene Elemente enthält, werden die Elemente als Schlüssel/Wert-Paare mit Tasten angezeigt werden, die Namen und Werte Arrays mit mehr Daten sind durch: [wp_oembed_add_discovery_links] => Array

  3. Collected alle Schlüssel und jeden Eintrag in functions.p eingefügt PS in folgendem Format: remove_action('wp_head', 'wp_oembed_add_discovery_links') hatte ich etwa 20 Einträge insgesamt entfernte ich auch die Funktion von Schritt 1

  4. der Seite neu geladen und festgestellt, dass die og Meta-Daten verschwunden waren, so war es, eine Menge anderer Sachen aus das <head> Element. Um mich schnell auf das beleidigende Element zu beschränken, benutzte ich die binäre Suche, entfernte die Hälfte der Elemente und sah, ob es einen Effekt hatte. Innerhalb von 4 Iterationen, fand ich den Täter: fifu_add_social_tags

  5. Leave remove_action('wp_head', 'fifu_add_social_tags'); Logik in functions.php og Tags aus Rendering zu verhindern, entfernen Sie alle anderen Linien.

+0

Vielleicht müssen Sie diese Antwort "markieren", so dass andere mit einem ähnlichen Problem stecken könnte leichter in dieser Website Suche finden. :) Viel Glück mit Ihrem Projekt. – Jevuska

+0

Konnte nicht bis 2 Tage nach der Post annehmen. –

Verwandte Themen