Piszemy mini-plugin dodający tooltipy w CSS oraz własny shortcode, który nam te tooltipy generuje. Bardzo prosty, łatwy plugin, wręcz drobne ćwiczenie w porównaniu z tym, co już robiliśmy, a zarazem rzecz bardzo praktyczna i świetne utrwalenie poznanych już jakiś czas temu umiejętności.
Tooltip w CSS – jak to działa
Opisywałem to w szybkim CSS – mamy taki element ze spanem, a w nim treść tooltipa w data-secie:
<p><span data-tooltip="Taki tekst pseudołaciński do testowania na stronach">Lorem ipsum</span>, dolor sit amet consectetur adipisicing elit. Temporibus sed in corrupti eius consectetur a molestiae quo praesentium, voluptate quam, aliquid labore magnam. Aliquid inventore cumque doloribus, quaerat dolorem qui!</p>
Nasz kod do wyświetlania tooltipa:
[data-tooltip]:hover::after {
display: block;
position: absolute;
content: attr(data-tooltip);
border: 1px solid black;
background: #eee;
padding: .25em;
}
Pobiera tooltip z data-setu i ładuje do 'content’ za pomocą funkcji 'attr’. Działa na elementach posiadających data-tooltip w data-secie, po najechaniu na nie myszką, wykorzystując pseudo-element ::after. Stylowanie możemy dostosować do własnych potrzeb.
Opcjonalnie możemy też dać podkreślenie spanom posiadającym tooltipa:
span[data-tooltip]{
border-bottom: 1px dotted #000;
text-decoration: none;
}
To nasz cały CSS.
Tworzymy nasz plugin i dodajemy CSS
W wp-content, w folderze plugins tworzymy folder shortcode-tooltip. W nim plik shortcode-tooltip.php ze standardowymi zabezpieczeniami:
<?php
/**
* Plugin Name: Shortcode Tooltip Plugin
* Description: Tooltips with shortcodes.
* Version: 1.0
* Author: Your Name
*/
if (!defined('ABSPATH')) {
exit;
}
Poniżej dodajemy nasze style CSS:
function shortcode_tooltip_add_styles(){
echo "<style>
[data-tooltip]:hover::after {
display: block;
position: absolute;
content: attr(data-tooltip);
border: 1px solid black;
background: #eee;
padding: .25em;
}
span[data-tooltip]{
border-bottom: 1px dotted #000;
text-decoration: none;
}
</style>";
}
add_action('wp_head', 'shortcode_tooltip_add_styles');
Teraz tworzymy jeszcze w tym samym folderze plik index.php o następującej treści:
<?php
# Silence is golden.
Plugin prawie gotowy. Potrzebny nam teraz nasz shortcode, który napiszemy sobie w shortcode-tooltip.php.
Tworzymy shortcode dla tooltipa
Chcemy, aby nasz shortocode wyglądał tak:
[custom-tooltip tooltip="blabla blabla blabla"]bla[/custom-tooltip]
Zaś po wykonaniu, na stronie mamy dostać taki element <span>:
<span data-tooltip="blabla blabla blabla">bla</span>
Resztą zajmie się CSS, który dołączyliśmy. Potrzebujemy zatem shortcode, który przyjmuje atrybut tooltip oraz jakiś content i odpowiednio to obrabia:
function custom_tooltip_shortcode($atts, $content = null) {
$atts = shortcode_atts(array(
'tooltip' => '',
), $atts);
return '<span data-tooltip="' . esc_attr($atts['tooltip']) . '">' . esc_html($content) . "</span>";
}
add_shortcode('custom-tooltip', 'custom_tooltip_shortcode');
Tyle wystarczy. Mamy tutaj odpowiedni kod + wszystkie możliwe zabezpieczenia. Teraz tylko musimy dodać nasz shortcode. Dodajemy wewnątrz jakiegoś paragrafu – nie pustego, tylko wewnątrz tekstu (inaczej nasz tooltip może się źle wyświetlać, to częste gdy dodajemy shortcodes, które mają robić coś w tekście a później testujemy je na „dummy contencie” na localhoście w pustym paragrafie i coś się źle wyświetla).
Ogólnie shortcodes są od tego, aby wewnątrz tekstu pewne elementy modyfikować. Używanie ich w pustym paragrafie nie ma sensu, jeżeli już musimy to robić to CSS (odpowiednio centrujący z lewej i prawej) też będziemy musieli sami dopisać – ale po co. Kiedyś tak się robiło i pewnie nadal tak się robi (pluginy tworzące różne formularze potem generujące shortcode do wklejenia) – tutaj ciężar odpowiedniego CSS spoczywa na twórcy pluginu.
My jednak, w dzisiejszych czasach, jak będziemy chcieli napisać coś co wygląda jak blok i działa jak blok, to napiszemy blok. Który, blokiem będąc jak cała reszta bloków z domyślnymi włącznie, sam się będzie odpowiednio centrował i łapał marginesy lewo/prawo tak, jak wszystkie inne nasze bloki.
Natomiast shortcodes do pracy z tekstem dobrze działają z tekstem. Ale wrzucając do pustego paragrafu sam shortcode i żadnego tekstu poza nim możemy mieć nieoczekiwane działanie w postaci naszego elementu gdzieś zupełnie po lewej, inaczej niż reszta bloków.
Cóż, wtedy polecam, zanim zaczniemy panikować, wkleić jakieś „lorem ipsum” do paragrafu i tam użyć shortcode i zobaczyć, że działa, jak ma działać.