nie wyświetla mi się plugin
-
Witam wszystkich,
napisałam plugin, ale nie mogę go wyświetlić na stronie. Instaluje się bez problemu, bo w adminie jest menu i kilka tabel. Chciałam wstawić kod php na stronie głównej w theme, ale nie ma takiej możliwości (if (function_exists()) itd.). Pytanie moje jest może banalne: jak wstawić plugin, by wyświetlał się na stronie głównej. Wiem, że muszę wpisać kod pomiędzy [ i ] do edytora WYSIWIG strony home, ale nie wiem jaki :/ Może muszę utworzyć taga w custom field ?
Proszę o pomoc 🙂 Anka
-
A to musi być plugin?
Żeby wyświetlić coś w jako shortcode (w tych klamerkach o których piszesz), to wystrczy dodać funkcję do pliku functions.php.Plugin moim zdaniem to coś raczej uniwersalnego, dla dowolnego motywu, a Ty chyba chcesz osiągnąć dedykowanego tylko pod tą konkretną stronę?
Nie musi to być plugin. Chcę tylko wyświetlić kalkulator podatkowy na głównej stronie. Wszystkie dane mam w bazie, a w pliku kalkulator.php mam całą obsługę (zapis do bazy, odczyt z bazy itd). Funkcja showKalkulator() odpowiedzialna jest za wygląd kalkulatora na stronie. Mam całą funkcję przebudować na shortcode?
Plik function.php wygląda następująco:<?php /* DEFINE FILE DIRECTORIES */ define('KARMA_FUNCTIONS', TEMPLATEPATH . '/functions'); define('KARMA_GLOBAL', TEMPLATEPATH . '/functions/global'); define('KARMA_ADMIN', TEMPLATEPATH . '/functions/admin'); define('KARMA_EXTENDED', TEMPLATEPATH . '/functions/extended'); define('KARMA_CONTENT', TEMPLATEPATH . '/functions/content'); define('KARMA_JS', get_template_directory_uri() . '/js'); define('KARMA_FRAMEWORK', get_template_directory_uri() . '/functions'); define('KARMA_CSS', get_template_directory_uri() . '/css/'); define('KARMA_HOME', get_template_directory_uri()); /* LOAD GLOBAL ELEMENTS */ require_once(KARMA_GLOBAL . '/shortcodes.php'); require_once(KARMA_GLOBAL . '/shortcodes-old.php'); require_once(KARMA_GLOBAL . '/widgets.php'); require_once(KARMA_GLOBAL . '/sidebars.php'); require_once(KARMA_GLOBAL . '/javascript.php'); require_once(KARMA_GLOBAL . '/theme_functions.php'); require_once(KARMA_GLOBAL . '/basic.php'); require_once(KARMA_GLOBAL . '/nav-output.php'); /* LOAD CONTENT */ require_once(KARMA_CONTENT . '/custom-login.php'); /* LOAD ADMIN */ require_once(KARMA_ADMIN . '/admin-functions.php'); require_once(KARMA_ADMIN . '/admin-interface.php'); require_once(KARMA_ADMIN . '/theme-options.php'); require_once(KARMA_ADMIN . '/theme-functions.php'); require_once(KARMA_ADMIN . '/write_panels.php'); /* LOAD EXTENDED FUNCTIONALITY */ require_once(KARMA_EXTENDED . '/pricing-tables/pricing.php'); require_once(KARMA_EXTENDED . '/multiple_sidebars.php'); require_once(KARMA_EXTENDED . '/breadcrumbs.php'); require_once(KARMA_EXTENDED . '/wysiwyg/wysiwyg.php'); require_once(KARMA_EXTENDED . '/3d-tag-cloud/wp-cumulus.php'); require_once(KARMA_EXTENDED . '/twitter/latest-tweets.php'); require_once(KARMA_EXTENDED . '/page_linking.php'); require_once(KARMA_EXTENDED . '/get-the-image.php'); require_once(KARMA_EXTENDED . '/upgrade/init.php'); $ka_formbuilder = get_option('ka_formbuilder'); if ($ka_formbuilder == "true"){require_once(KARMA_EXTENDED . '/contact-form/truethemes-contact-form.php');} if(!function_exists('wp_pagenavi')){require_once(KARMA_EXTENDED . '/wp-pagenavi.php');} ?>
Możesz napisać co mam i gdzie wstawić?
A są jakieś powody, dla których to musi być wyświetlane przez edytor? Nie lepiej zrobić plik front-page.php albo home.php odpowiedzialny za wyświetlania strony głównej i tam wstawić wywołanie właściwej funkcji?
Oczywiście nazwy home.php czy front-page nie są przypadkowe (zobacz ten schemat.
A więcej o tworzeniu statycznej strony startowej możesz poczytać w Kodeksie.
Musi być przez edytor, bo strona ma trzy kolumny, które są tworzona w edytorze. Tam też dwie z nich zawierają tekst, a ja muszę w trzecią wstawić kalkulator.
[one_third][notify_box font_size="14px" style="blue"] <div class="message"> </div> [/notify_box] [/one_third] [one_third][notify_box font_size="14px" style="blue"] <div class="message"> </div> [/notify_box] [/one_third] [one_third_last] kalkulator wkrotce [/one_third_last]
Jakieś wskazówki?
No to faktycznie w tym przypadku short code by się przydał. Ale w czym konkretnie jest problem, chcesz się dowiedzieć jak napisać short code?
Jeżeli by to nie była trudność to prosiłabym o pomoc… Znalazłam plugin Shortcode Exec PHP, gdzie można pod wybraną nazwą wstawić shortcode, ale ja nie wiem jak przerobić funkcję tak by działała:
function wp_kalkulator() { echo "<div class=\"kontener\"> <table class=\"nag_kalk\"> <tr> <td></td> </tr> </table>"; if (isset($_POST['submit'])) { $yearId = $_POST['yearId']; $zarobek = $_POST['zarobek']; $podatek = $_POST['podatek']; global $wpdb; $prefix = $wpdb->prefix; $Kalk1 = $prefix."money"; $Kalk2 = $prefix."pay_to"; $Kalk3 = $prefix."tax"; $wynik=$wpdb->get_results( "SELECT ".$Kalk2.".m_id, ".$Kalk2.".tax_year_id, m_from, m_to, tax FROM ".$Kalk1.", ".$Kalk2.", ".$Kalk3." WHERE ".$Kalk1.".m_id = ".$Kalk2.".m_id AND ".$Kalk2.".tax_id = ".$Kalk3.".tax_id AND tax_year_id=".$yearId." AND ".$zarobek." BETWEEN m_from AND m_to" ); foreach ($wynik as $w) { $wyn=$wpdb->get_var($wpdb->prepare( "SELECT min(m_to) FROM ".$Kalk1.", ".$Kalk2." WHERE ".$Kalk1.".m_id = ".$Kalk2.".m_id AND ".$Kalk2.".tax_year_id = ".$w->tax_year_id )); $podstawa=$zarobek-$wyn; if ($podstawa > 0) { $naleznosc=(($w->tax)*$podstawa)/100; $nadplata=$podatek-$naleznosc; } else { $naleznosc=0; $nadplata=$podatek; } } echo "<div class=\"kalk_body\"> <table class=\"kalk\"> <tr> <td> </td> <td> </td> </tr> <tr> <td>Zarobiona kwota:</td> <td>".$zarobek."</td> </tr> <tr> <td>Zapłacony podatek:</td> <td>".$podatek."</td> </tr> <tr> <td>Podatek do zapłaty:</td> <td>"; echo $naleznosc; echo " </td> </tr> <tr>"; if ($nadplata >= 0) { echo "<td>Nadpłata:</td>"; echo "<td>"; echo $nadplata; } else { echo "<td>Niedopłata:</td>"; echo "<td>"; echo abs($nadplata); } echo " </td> </tr> <tr> <td> </td> <td> </td> </tr> </table>"; } else { echo "<div class=\"kalk_body\"> <table class=\"kalk\"> <tr> <td> </td> <td> </td> </tr> <tr> <td>Rok podatkowy: </td> <td>"; echo showTaxYearFront(); echo "</td></tr> <tr> <td>Zarobiona kwora: </td> <td><input class=\"kwota\" type=\"text\" name=\"zarobek\" /></td> </tr> <tr> <td>Zapłacony podatek: </td> <td><input class=\"kwota\" type=\"text\" name=\"podatek\" /></td> </tr> <tr> <td> <input class=\"button\" type=\"submit\" name=\"submit\" value=\"\" /></td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table></form></div>"; } echo "</div>"; }
Czy wogóle da się z tego coś wyrzeźbić?
Najprościej będzie jak zrobisz tak:
1. otwierasz functions.php
2. wpisujesz coś takiego:function display_calculator($atts) { /*tu wklejasz cały kod wyświetlający kalkulator, ale uwaga! nie na zasadzie copy-paste, tylko musisz go tak przerobić, żeby wynik poszedł nie na ekran, tylko do zmiennej, zacznę kawałek: */ $begin_block = '<div class=\"kontener\"> <table class=\"nag_kalk\"> <tr> <td></td> </tr> </table>"'; $middle = ... $end_block = '</div>'; // na koniec musisz całość zwrócić jako wynik, możesz sobie posklejać poszczególne części np.: return $begin_block . $middle . $end_block; } add_shortcode('calculator', 'display_calculator');
a short code wywołujesz pisząc
[calculator]
Najlepiej zrób tak, że na początku wklej sobie jakiś prosty kawałek HTML-a, np. „Hello from my short code” i zobacz czy już Twój short code działa po wpisaniu do edytora. A potem będziesz go stopniowo uzupełniać, aż osiągniesz, to co chciałaś.
Wpisałam tak jak mówiłeś sam prosty html i short code do edytora na stronie home, niestety nie działa 🙁
function display_calculator($atts) { $begin_block = '<div class=\"kontener\" border=\"1\"> <table class=\"nag_kalk\"> <tr> <td></td> </tr> </table>"'; $end_block = '</div>'; return $begin_block . $end_block; } add_shortcode('calculator', 'display_calculator');
Przyjrzę się temu, a w międzyczasie polecam Ci mój ostatni artykuł Dziewczyny WordPressa w Polsce, to będziesz wiedzieć, do czego teraz „piję” 😉
Kod, który podałaś działa. Po jego wywołaniu w edytorze na stronie wprawdzie nie zobaczysz nic sensownego, ale jak zerkniesz w podgląd źródła strony to wszystkie te znaczniki HTML-owe będą widoczne.
A mi nie działa, na stronie pojawia się to co wpisałam w edytorze: [calculator]. No nic dzięki wielkie za pomoc, jak tobie działa to znaczy, że może nie tu wpisuje.
A artykuł przeczytałam i żeczywiście masz w nim sporo racji, sorki za stereotypowe zachowanie 🙂Działa !!! Super dzieki wielkie, bez Tojej pomocy pewnie bym sobie nie poradziła 🙂
pozdrawiam
AnkaCieszę się 🙂 Również pozdrawiam.
- Temat ‘nie wyświetla mi się plugin’ jest zamknięty na nowe odpowiedzi.