Wsparcie » Wtyczki » Shortcode w template – osobny plik php

  • Rozwiązano koryx

    (@koryx)


    Witam
    Stworzyłem stronę, na której wyświetlane są różne informacje z bazy danych, jest tam też formularz do wypełnienia i wysłania oraz parę innych rzeczy. Wszystko to ma być widoczne tylko dla określonej grupy użytkowników, do tego celu wykorzystałem plugin Groups. Działa on na stronach tworzonych w WP jednak gdy chcę wykorzystać shortcode w dołączonym pliku nie mogę sobie poradzić. O ile funkcje

    echo do_shortcode('[gallery]');
    echo do_shortcode('[groups_member group="Registered"]'.$tekst.'[/groups_member]');

    działają bez zarzutu dla pojedynczego shortcode oraz podwójnego jeżeli jest w 1 linii to nie wiem jak to zastosować do całej strony, czyli:

    [groups_member group="Registered"]
    treść strony napisana w php
    [/groups_member]

    Oczywiście ani powyższy, ani poniższy kod nie działa i nie wiem jak to zrobic?

    echo do_shortcode('[groups_member group="Registered"]');
    treść strony napisana w php
    echo do_shortcode('[/groups_member]');

Viewing 6 replies - 1 through 6 (of 6 total)
  • Hmm, trochę czasu zajęło mi zrozumienie, o co Ci chodzi. Trochę tu czarujesz, ale OK…

    Jeśli koniecznie chcesz to zrobić tym shortcode’em, to musisz jakoś tak:

    <?php
      ob_start();
      tresc strony w php
      $content = ob_get_clean();
      echo do_shortcode('[groups_member group="Registered"]'.$content.'[/groups_member]');
    ?>

    Tyle, że to jest generalnie trochę bez sensu chyba, bo generujesz kod HTML po to, żeby go nie wyświetlić. O wiele lepiej byłoby wywalić w tym przypadku te shortcode’y i w PHPie zastosować odpowiednie IFy.

    Thread Starter koryx

    (@koryx)

    Powyższe rozwiązanie działa. Dziękuję. Co do sensu stosowania shortcode to dotyczy on grup stworzonych przeze mnie w pluginie Groups a nie tych standardowych z wordpressa i żeby je stosować w IF musiałbym chyba używać odpowiednich zapytań sql do bazy danych żeby sprawdzić czy dany użytkownik należy do określonej grupy np. zawodnicy. Jeśli jest prostszy sposób na to to chętnie go poznam bo w WP jeszcze raczkuję a php sobie przypominam 🙂
    Korzystając z okazji zapytam co jest nie tak w takim kodzie:
    <form action="http://127.0.0.1/?page_id=165&action=zapisz" method="post">
    na stronie do której się odwołuje formularz:

    if(action=='zapisz') { kod }
    else { kod }

    wykonywany jest tylko i wyłącznie kod dla else, nie ważne czy w IF jest też warunek o page_id czy nie

    Wiesz, jeśli masz shortcode, to jest też jakaś funkcja, która go obsługuje. Skoro tak, to można by podejrzeć jej kod i wygrzebać z niego jakiś sensowniejszy sposób…

    No ten kod, który tutaj wkleiłeś jest raczej totalnie bez sensu. Podejrzewam, że ten if ma wyglądać tak:

    if ( isset($_POST['action']) && $_POST['action'] == 'zapisz')...

    PS. Jeśli zaczynasz tworzyć kod PHP dla WordPressa, to wypadałoby się chyba najpierw nauczyć PHP – i to lepiej szybko, zanim sobie zaszkodzisz 😉

    Thread Starter koryx

    (@koryx)

    Warunek IF którego użyłem stosowałem jakieś 10 lat temu i tak jak pisałem pewne rzeczy dopiero sobie przypominam i teraz kopiuje z prac które wtedy robiłem 🙂 (wiem że sporo się pozmieniało ale od czegoś trzeba zacząć). Skorzystałem z twojego rozwiązania i kod wygląda mniej więcej tak:

    if ( isset($_POST['page_id']) && $_POST['page_id'] == '165' && isset($_POST['action']) && $_POST['action'] == 'zapisz')
    { mysql_query("INSERT INTO .............."); }
    else
    {
     print("<form action=\"http://127.0.0.1/?page_id=165&action=zapisz\" method=\"post\">");
      print("<input ...................");
      print("<input type=\"submit\" value=\"Dodaj\" /></form>");
     }

    niestety ciągle wykonywany jest tylko kod w else

    maly edit: dodam, że jak w formularzu odwołuję się do innej strony php np. <form action=\”http://127.0.0.1/innastrona.php?action=zapisz\”> warunek if działa w niej prawidłowo

    A, no bo Ty chcesz tam sprawdzać $_GET, a nie $_POST – teraz dopiero zauważyłem, jak wysyłasz formę 😉

    I jeśli w WordPressie wstawiasz cokolwiek do bazy, to raczej chcesz użyć $wpdb 😉

    Thread Starter koryx

    (@koryx)

    dodanie między innymi w formularzu <input type=\"hidden\" name=\"zp\" id=\"zp\" value=$zp> i wykorzystanie tego w warunku IF rozwiązało sprawę 🙂

    do dodawania do bazy użyłem jak poleciłeś $wpdb->insert

Viewing 6 replies - 1 through 6 (of 6 total)
  • Temat ‘Shortcode w template – osobny plik php’ jest zamknięty na nowe odpowiedzi.