Archive for the ‘Wordpress’ Category

Leere weiße Seite im WordPress wp-admin

30. April 2013

Da verbringe ich jeden Tag damit, die Probleme der Kunden mit WordPress zu lösen, und heute stelle ich entsetzt fest: mein eigenes WordPress liefert nach dem login eine weiße Seite. Debuggen hat dann irgendwann zutage gebracht, dass der Übeltäter eigentlich nur der redirect sein kann, wp_redirect um genauer zu sein.

Gottseidank hat mich eine kurze Recherche bei google auf Christopher Shennan’s Blog gebracht, wo EXAKT das gleiche Problem beschrieben war – und mir exakt seine Lösung auch geholfen hat, es zu beseitigen! Einfach

  1. php_flag output_buffering on

in die htaccess kopiert und schon gings wieder!

Danke danke danke!

das Geheimnis der Permalinks – gelüftet

09. Juli 2012

Ich bin sicher, das ist nun keine so große Entdeckung, aber ich wusste lange nicht, wie WordPress das mit den Permalinks regelt. In die .htaccess wird ja nur eine einfache Regel geschrieben, der Rest passiert woanders. Und zwar werden alle rewrite Regeln in die wp_options geschrieben, mit dem option_name “rewrite_rules”. Zur Not kann man also direkt darin etwas ändern. Eine neue Regel kann man aber auch in der functions.php definieren:

  1. add_filter('generate_rewrite_rules', 'xxx_change_rules');
  2. function xxx_change_rules($wp_rewrite) {
  3.     $new_rules = array(
  4.         'marken/([a-z0-9])$'         => 'index.php?pagename=marken&buchstabe=' . $wp_rewrite->preg_index(1),
  5.         'verkauf/page/([0-9])$' => 'index.php?pagename=verkauf&seite=' . $wp_rewrite->preg_index(1),
  6.     );
  7.     $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
  8. }

WordPress Archiv Widget: gruppieren nach Jahren

28. Juni 2012

Nachdem meine Einträge nun schon bis ins Jahr 2008 zurückreichen, wollte ich mein Archiv in der rechten Sidebar nach Jahren gruppieren und die einzelnen Monate nur dann anzeigen lassen, wenn man auf ein Jahr klickt. Und das geht durch folgenden code in der sidebar.php:

  1. $args = array(
  2.     'type'            => 'monthly',
  3.     'limit'           => '',
  4.     'format'          => 'html',
  5.     'before'          => '',
  6.     'after'           => '',
  7.     'show_post_count' => false,
  8.     'echo'            => 0
  9. );
  10. $res = wp_get_archives( $args );
  11. $archi = explode( '</li>' , $res );
  12. $links = array();
  13. foreach( $archi as $link ) {
  14.     $link = str_replace( array( '<li>' , "\n" , "\t" , "\s" ), '' , $link );
  15.     if( '' != $link )
  16.         $links[] = $link;
  17.     else
  18.         continue;
  19. }
  20. $y = 0;
  21. foreach($links as $k => $v){
  22.     $match = array();
  23.     preg_match("/title='(.*?)'/si", $v, $match);    
  24.     $tmp = explode(" ", $match[1]);
  25.     if($y != $tmp[1]){
  26.         echo "<li><b><a href='#' onclick='$(\".li_".$tmp[1]."\").show();'>".$tmp[1]."</a></b></li>";
  27.     }
  28.     $y = $tmp[1];
  29.     echo "<li style='margin-left:10px;display:none;' class='li_".$tmp[1]."'>".$v."</li>";
  30. }

Das wars! Voraussetzung dafür ist nur, dass jQuery inkludiert ist.

Das WordPress Admin Interface verändern

27. Juni 2012

Eigentlcih brauch ich dazu gar nichts schreiben, weil es auf Six Revisions bereits ausführlich beschrieben wurde. Ein sehr nützlicher, hilfreicher Artikel, danke!

wp_register_script wurde fehlerhaft aufgerufen

01. Februar 2012

Wenn man in WordPress debug auf true schaltet, bekommt man eventuell direkt die Meldung, dass wp_register_script oder wp_enqueue_script fehlerhaft aufgerufen wurde. Das hat mich schon etwas Zeit gekostet, die Lösung des Problems zu finden: man darf diese Funktionen nicht mehr so aufrufen sondern nur noch innerhalb einer action.

Vorher:

  1. if ( !is_admin() ) {
  2.     wp_deregister_script('jquery');
  3.     wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"), array('jquery'));
  4.     wp_enqueue_script('jquery');
  5. }

Nachher:

  1. if ( !is_admin() ) {
  2.     add_action('wp_enqueue_scripts', 'enqueue_scripts');    
  3. }    
  4. function enqueue_scripts() {
  5.     wp_deregister_script('jquery');
  6.     wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"), array('jquery'));
  7.     wp_enqueue_script('jquery');
  8. }

Und nun wirft das ganze keine Fehlermeldung bzw. Notice mehr aus!

wp-downloadmanager zeigt nach Servertransfer nichts mehr an

01. Februar 2012

Nach dem Umzug auf einen anderen Server zeigte der Downloadmanager plötzlich nichts mehr an außer Kategorien. Im Backend waren die Dateien noch vorhanden, nur angezeigt wurde nichts. Grund ist derselbe wie beim nextgen und contactform7 Plugin auch: sie alle gehen nach dem Serverumzug nicht mehr, weil die config Werte mit serialize() bearbeitet werden und mit einer geänderten Domain dann nicht mehr korrekt eingetragen werden. Hilft also nur eines: alle Download Templates händisch rüberkopieren und die Pfade ändern.

WordPress post_content Formatierung / Absätze

31. Januar 2012

Wenn ich meine WordPress Daten mit get_post hole, dann ist post_content natürlich unformatiert. nl2br ist nur bedingt geeignet, aber es geht einfacher:

  1.     $p = get_post($id);
  2.     apply_filters('the_content', $p->post_content);

Ich LIEBE WordPress!

wordpress: nextgen Problem nach Server Transfer

18. Januar 2012

Nachdem ich ein wordpress Projekt von Server A nach Server B übertragen hatte, waren plötzlich sämtliche nextgen Konfigurationen verschwunden. Sämtliche Galerien auf der Seite funktionierten nicht mehr, stattdessen wurden einfach alle Bilder unformatiert und ohne hübsche Slideshow angezeigt.

Das Problem lässt sich mit Datenbankzugang folgendermaßen beheben: in wp_options den Eintrag finden wo option_name = ngg_options und dann option_value von der alten Datenbank holen und reinkopieren. Die Werte in option_value sind offenbar die config Werte der Galerie und werden aus irgendeinem Grund nicht richtig eingetragen in die Datenbank.

 

wordpress: title und alttext bei get_the_post_thumbnail ändern

05. Dezember 2011

Da war ich schon kurz davor, die beiden Tags mit preg_replace zu entfernen, bevor mir klar wurde, dass man beim Aufruf der Funktion direkt title und alt Tag ändern kann:

  1. $tn = get_the_post_thumbnail(get_the_ID(), '', array( 'alt' => '', 'title' => ''));

Und schon klappt das.

contactform7 – on_sent_ok geht nicht

09. November 2011

Ich hab heut sicher eine halbe Stunde damit verbracht… der on_sent_ok hook von contactform7 wollte nicht funktionieren.

Der Grund war, dass ich in aller Eile ein eigenes Template erstellt hatte, wo das Formular angezeigt wird, und dabei hatte ich völlig vergessen, in meiner footer Datei den WordPress Footer  zu integrieren:

  1. wp_footer();

In dem Moment, wo ich den wieder integriert hatte, funktionierte auch der hook wieder und ich konnte mein Formular nach dem Senden auf eine Danke Seite weiterleiten…

/facepalm