WordPress hat seit geraumer Zeit die oEmbed Integration um einfach und unkompliziert Inhalte von anderen Siters und Services einzubinden. Besonders bekannt sind dabei diverse Video-Portale und seit der letzten WordPress Version Twitter. Wie so oft in WordPress kann man diese Möglichkeit nutzen und erweitern. In meinem Fall ging es darum, dass Inhalt von Github Gists einfach integriert werden können, einfach per URL in den Inhalt kopieren und gut. Dabei ist ein kleines Plugin entstanden, welches auf Github liegt und von dort genutzt werden kann und ggf. auch via Fork erweitert werden kann.
»» zum Plugin
Technisch ist es wichtig die Funktion wp_embed_register_handler
anzusprechen und daher der Kern der Funktion. Alles weitere findet man im Source des Plugins. Die Funktion erlaubt es neu Handler zu definieren und diese geben dann die nötigen Inhalte zurück. In diesem Beispiel wird der String gist
definiert, der die Funktione wp_embed_handler_gist
als Callback nutzt und die Gist-URL als Parameter. Innerhalb der Funktion werden dann die Inhalte des Parameters ersetzt und die Rückgabe definiert.
wp_embed_register_handler(
'gist',
'#https://gist.github.com/(?:[a-z0-9-]*/)?([a-z0-9]+)(\#file_(.+))?$#i',
'wp_embed_handler_gist'
);
function wp_embed_handler_gist( $matches, $attr, $url, $rawattr ) {
$embed = sprintf(
'',
esc_attr( $matches[1] ),
esc_attr( $matches[2] )
);
return apply_filters( 'embed_gist', $embed, $matches, $attr, $url, $rawattr );
}