Mit WordPress 3.3 wird ein mit dem Feature Pointer eine bekannte Idee aus anderen Tools übernommen. So kennt man beispielsweise aus Google Mail oder Doc die Hinweise zu neuen Umsetzungen in der Oberfläche, in dem man mit Bubbles auf diese neuen Möglichkeiten hinweist. In WordPress 3.3 wurde die Admin Bar überarbeitet – gelungen, wie ich finde – und darauf wird erstmalig mittels der Feature Pointer hingewiesen.
Ist man im Umfeld von Kunden, kann es sein, dass dies nicht gewollt ist – verschieden Scenarios sind hier denkbar. Aber auch hier setzt WordPress auf die Hooks und so kann man auf verschiedene Art und Weise eingreifen. Eine Idee ist, die Nutzereinstellungen der User anzupassen, da die Feature Points mittels Javascript eine Option in der Tabelle ablegen, so dass man die gelesen Hinweise nicht nochmals sieht. Alternativ kann man sie deaktivieren via Hook; folgende kleine Lösung in ein Plugin oder die functions.php des Themes (wobei Zweites eher ungeeignet) kann helfen.
add_filter( 'show_wp_pointer_admin_bar', '__return_false' );
Hat man als Anwender die Admin Bar nicht aktiv bzw. sie ist global deaktiviert, dann werden auch keine Feature Points dazu angezeigt.
Ebenfalls kann man die Hooks nutzen und eigene Feature Points einsetzen. Ohne Anpassung im Design und Position ist damit folgendes einfaches beispiel denkbar. Soll die Position verändert werden, so genügt die Anpassung im Script-Abschnitt zu JS-Funktion pointer()
in der PHP-Funktion get_content_in_wp_pointer()
. Die Funktion pointer()
kann mittels verschiedener Parameter (content, position, arrow, close
) gesteuert werden.
function get_content_in_wp_pointer() {
$pointer_content = '<h3>' . __( 'WP Pointer with version 3.3.', 'my_textdomain' ) . '</h3>';
$pointer_content .= '<p>' . __( 'Add your own informations to WP Pointer.', 'my_textdomain' ) . '</p>';
?>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready( function($) {
$('#wpadminbar').pointer({
content: '<?php echo $pointer_content; ?>',
position: {
my: 'left top',
at: 'center bottom',
offset: '-25 0'
},
close: function() {
setUserSetting( 'p1', '1' );
}
}).pointer('open');
});
//]]>
</script>
<?php
}
function fb_enqueue_wp_pointer( $hook_suffix ) {
$enqueue = FALSE;
$admin_bar = get_user_setting( 'p1', 0 ); // check settings on user
// check if admin bar is active and default filter for wp pointer is true
if ( ! $admin_bar && apply_filters( 'show_wp_pointer_admin_bar', TRUE ) ) {
$enqueue = TRUE;
add_action( 'admin_print_footer_scripts', 'get_content_in_wp_pointer' );
}
// in true, include the scripts
if ( $enqueue ) {
wp_enqueue_style( 'wp-pointer' );
wp_enqueue_script( 'wp-pointer' );
wp_enqueue_script( 'utils' ); // for user settings
}
}
add_action( 'admin_enqueue_scripts', 'fb_enqueue_wp_pointer' );
Bitte beachten: die Umsetzung basiert auf einer Nightly Build von WordPress, nicht das Release 3.3 und damit kann sich noch etwas ändern oder es sind andere Lösungen möglich. Daher bitte je nach Version von WordPress die Lösung validieren. Als Tipp sollte es ausreichen – alles andere ist Kreativität und Können.