• Rozwiązano anka123426

    (@anka123426)


    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

Viewing 15 replies - 1 through 15 (of 18 total)
  • 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ę?

    Twórca wątku anka123426

    (@anka123426)

    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.

    Twórca wątku anka123426

    (@anka123426)

    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?

    Twórca wątku anka123426

    (@anka123426)

    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>&nbsp;</td>
                          <td>&nbsp;</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>&nbsp;</td>
                          <td>&nbsp;</td>
                      </tr>
                  </table>";
        } else {
            echo "<div class=\"kalk_body\">
                  <table class=\"kalk\">
                  <tr>
                          <td>&nbsp;</td>
                          <td>&nbsp;</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>&nbsp;</td>
                  </tr>
                  <tr>
                          <td>&nbsp;</td>
                          <td>&nbsp;</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ś.

    Twórca wątku anka123426

    (@anka123426)

    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.

    Twórca wątku anka123426

    (@anka123426)

    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 🙂

    Twórca wątku anka123426

    (@anka123426)

    Działa !!! Super dzieki wielkie, bez Tojej pomocy pewnie bym sobie nie poradziła 🙂
    pozdrawiam
    Anka

    Cieszę się 🙂 Również pozdrawiam.

Viewing 15 replies - 1 through 15 (of 18 total)
  • Temat ‘nie wyświetla mi się plugin’ jest zamknięty na nowe odpowiedzi.