Jakiś czas temu przedstawiłem Wam jak w prosty sposób można dodać własny kod do WordPressa – albo za pomocą własnej wtyczki, albo korzystając z pliku functions.php (pamiętajcie o motywach potomnych/child themes).

Dziś powrócimy do tego tematu – dostałem prośbę od znajomego, o przekształcenie „pewnego rozwiązania” w działającą wtyczkę do WordPressa. Zadanie postanowiłem przyjąć, bo będzie z tego zapewne dla wielu z Was przydatny wpis…

WordPress: Tworzymy własną wtyczkę

Znajomy szukał prostego „wyskakującego paska”, na którym umieści jakiś tekst, zachęcający do działania. Rozwiązań tego typu jest już gotowych masa – jak choćby Icegram, który opisywałem wczoraj, a który obecnie zachęca Was do zapisania się do naszego Newslettera (serio – zero SPAMu, same konkrety, tak więc serdecznie polecam :)).

Ale tu „obiektem westchnień” stał się BugMeBar, którego kod można znaleźć na GitHubie, albo – jak wykazało moje małe śledztwo – w formie gotowej wtyczki do WordPressa, którą za jedyne 12$ możecie kupić na platformie CodeCanyon.

Tworzymy stryktury strukturę

Zacząłem od utworzenia katalogu „webinsider-wp-bugmebar”, w którym to umieściłem plik „webinsider-wp-bugmebar.php”, w którym znajdzie się kod naszej wtyczki.

Oprócz tego utworzyłem wewnątrz jeszcze – dla porządku – katalog „css” i „js”, w którym znajdą się niezbędne pliki pobrane ze strony projektu.

Po rozpakowaniu pliku „BugMeBar-master.zip” kopiujemy plik „bugme.css” do katalogu „css” nasze wtyczki, oraz pliki „jquery.bugme.js” i „jquery.cookie.js” do katalogu „js”.

Całość wygląda tak:

webinsider-wp-bugmebar:

-> katalog "css"
-> -> bugme.css

-> katalog "js"
-> -> jquery.bugme.js
-> -> jquery.cookie.js

-> webinsider-wp-bugmebar.php

Kod wtyczki

Gdy strukturę mamy już za sobą, możemy przystąpić do wyborów do przygotowania kodu naszej wtyczki. Podstawowe zasady znajdziecie w tym wpisie, więc nie będę ich tutaj ponownie wyjaśniał.

<?php
/*
* Plugin Name: WebInsider BugMeBar
* Plugin URI:
* Description: Add simple "info bar" :-)
* Author: Patryk z WebInsider
* Author URI: //webinsider.pl
* Version: 1.0.1
*/

if ( ! defined( 'ABSPATH' ) ) exit;

if ( !function_exists("webinsider_wp_bugmebar") ) {

function pryc_wp_bugmebar() {

echo '<script src="http://code.jquery.com/jquery-2.1.4.js"></script>';
echo '<script src="' . plugins_url( 'js/jquery.cookie.js', __FILE__ ) . '" ></script> ';
echo '<script src="' . plugins_url( 'js/jquery.bugme.js', __FILE__ ) . '" ></script> ';

echo '<link rel="stylesheet" href="' . plugins_url( 'css/bugme.css', __FILE__ ) . '" type="text/css" media="all" > ';

?>

<script>
jQuery(document).ready(function () {
jQuery('body').bugme({
target: ".entry-content", // Punkt zaczepienia, klasa lub ID DIVa (nie ma znaczenia gdy "fixed: true")
message: "A to jest nasz BugMeBar", // Wiadomość (można wstawić obrazki itp)
align: "center", // Pozycja wiaodmości (treści): left|right|center|justify
close: true, // Przycisk zamykania: true|false
closeText: "X", // Tekst przycisku zamykania
closeAlign: "right", // Pozycja przycisku zamykania: left|right
remember: true,  // Czy generować ciasteczko z info o zamknięciu: true|false
expireIn: 1,  // A jak tak, to jak długo ma żyć ciasteczko (w dniach)
cookieName: "bugmeb_wipl",  // Nazwa ciasteczka
colours: false, // Czy tło ma dynamicznie zmieniać kolor: true|false (tylko przeglądarki obsługujące CSS3)
animate: true, // Animacja pojawiania sie i znikania: true|false (tylko przeglądarki obsługujące CSS3)
fixed: true, // Czy przyczepić pasek na górze strony: true|false (ignoruje wtedy "target")
fixedSpacer: false, // Dodatkowa przestrzeń gdy "fixed true": true|false
zindex: 999 // Sterowanie wartością Z-Index
});
});
</script>
<?php
}
}
add_action('wp_head', 'webinsider_wp_bugmebar');

?>

Na 4 elementy/informacje chciałem zwrócić Waszą uwagę:

Dodanie kodu do nagłówka strony (head)

W naszym przypadku cały kod wtyczki dodajemy do nagłówka <head> strony, dlatego posługujemy się takim wywołaniem:

add_action('wp_head', 'webinsider_wp_bugmebar');

Problem z jQurey

Nie wiem jak będzie to wyglądało u nas, ale u mnie do poprawnego działania strony musiałem skasować linijkę:

echo '<script src="http://code.jquery.com/jquery-2.1.4.js"></script>';

Po prostu generowało to jakiś konflikt, a bez niej skrypt działa prawidłowo – po prostu jQuery jest już wczytywane przy innej okazji…

Parametry

Przy każdej z opcji umieściłem komentarz z informacją do czego służy, tak więc nie powinniście mieść większych problemów z ustawieniem wtyczki pod siebie.

Target or Fixed

Pozycję naszego paska informacyjnego ustawiamy za pomocą pozycji „target”, gdzie należy wpisać element zakotwiczenia, może to być np. klasa lub ID wybranego DIVa.

Nie ma to znaczenia, gdy chcecie wyświetlić pasek na samej górze – wtedy należy parametrowi „fixed” nadać wartośc „true”.

Wygląd BugMeBara

Wygląd, czyli kolor tła, wielkość liter itp. możecie zmieniać edytując plik „bugme.css” znajdujący się w katalogu „css”.

Działanie wtyczki

W naszym przypadku wtyczka szuka elementu „.entry-content”, gdzie wyświetla pasek z napisem:

A to jest nasz BugMeBar

wordpress_wlasna-wtyczka_bugmebar

Wy możecie ustawić innym element zaczepienia – wpisując zamiast „.entry-content” inną klasę, lub ID wybranego DIVa, ew korzystając z opcji „fixed:true”, co spowoduje wyświetlenie paska na samej górze strony, niezależnie od parametry wpisanego w pozycji „target”.

Ustawienia w panelu administracyjnym WordPressa

Jeśli teraz liczycie, że kolejnym krokiem tego poradnika będzie przygotowanie panelu z opcjami, tak by można było ustawieniami zarządzać bezpośrednio z wygodnego menu w panelu zarządzania stroną, mam dla Was być może smutną wiadomość – nie tym razem…

I to z co najmniej 2 powodów:

Rośnie poziom skomplikowania

Znacznie podniosło by to poziom skomplikowania kodu takiej wtyczki, bo trzeba by dodać elementy związane z przygotowaniem interfejsu, do tego dochodzi zapisywanie i odczytywanie wartości z bazy danych…

A nie to jest celem celem tego wisu – ten wpis ma Wam pokazać w praktyce, jak można wykorzystać w informacje związane z dodawaniem własnego kodu do WordPressa.

Na cele własne/prywatne – powinna Wam wystarczyć możliwość zmiany ustawień/parametrów naszego paska informacyjnego poprzez edycję plików.

BugMeBar – A simple little notification plugin

Jeśli jednak koniecznie potrzebujecie graficznego interfejsu – zachęcam do zakupu wtyczki przygotowanej przez autora skryptu który wykorzystaliśmy w tym przykładzie.

Gotowa wtyczka – z interfejsem graficznym – kosztuje tylko 12$ na CodeCanyon, a na pewno każdy dolar do Was wróci, choćby w postaci przyszłych aktualizacji, do których Wasz zakup na pewno autora zachęci :-)

Dodam może jeszcze, że choć na stronie znajomego uruchomiliśmy naszej roboty wtyczkę, to był na tyle z niej zadowolony, że postanowił wspomóc pierwotnego autora kupując wersję z CodeCanyon – i to mimo, że raczej nie planuje modyfikować parametrów jakie mu ustawiłem…

Zgłoś błąd na stronie

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!