Facebook registration plugin – innerhalt einer Lightbox

27. Juli 2012

Weil der Umgang mit Facebook und seinen social plugins noch nicht schwierig genug ist, habe ich mir in meiner grenzenlosen Vermessenheit gedacht, ich mache das Ganze noch eine Stufe schwieriger. Ich wollte, dass denen, die sich neu registrieren auf meiner Seite, das register plugin in einer Lightbox angezeigt wird. Ich muss völlig WAHNSINNIG gewesen sein, als ich diesen Plan gefasst habe.

Weil es das bisher beste Lightbox plugin ist, das mir je begegnet ist, habe ich mich für die jquery ColorBox entschieden. Die bringt eigentlich alle Features mit, die ich brauche, insbesondere die Möglichkeit, das Aussehen völlig an die eigenen Vorstellungen anzupassen. Ich habe also im header meiner Seite folgendes Script aufgerufen:

$(document).ready(function(){
$.colorbox({href: ‘register.html’, opacity:0.6, onComplete: function(){ FB.XFBML.parse(); } });
});

Damit wird beim Laden der Seite direkt die ColorBox aufgerufen und darin wird die register.html angezeigt, die sieht folgendermaßen aus:

  1.         <div id="register">
  2.             <div width="500" height="300" fb_only="true" onvalidate="validate"
  3.                         data-fields="[{'name':'name'}, {'name':'email'},
  4.                           {'name':'agb', 'description':'Ich akzeptiere die AGB', 'type':'checkbox'}]"
  5.                         data-redirect-uri="/register.php">
  6.             </div>
  7.         </div>

Durch das asynchrone Laden des Contents muss man diesen Facebook Code neu parsen, dazu ist der onComplete Teil da: FB.XFBML.parse() stellt sicher, dass das registrieren Formular auch wirklich jedes mal angezeigt wird.

PS: was hier jetzt so leicht aussieht, hat mich in Wahrheit natrülich mehrere Stunden gekostet.

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. }