Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Wordpress][PHP] Uruchamianie funkcji zefiniowanej przez wtyczkę
mikolajjj
post 14.01.2015, 09:36:35
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


Witam
Mam proste głupie pytanie – jak mam odwołać się w Wordpresie do funkcji zdefiniowanej przez jakąś wtyczkę? Chcę użyć takiej funkcji w prostym skrypcie (odpalanym ręcznie z palca, lub cronem).
Dokładnie chodzi mi o Pods Framework (wtyczka do definiowania Custom Post Type), w referencjach znalazłem funkcję dodającą treści do Custom Pods - (http://pods.io/docs/code/pods/add/), oryginalny przykład użycia wtyczki poniżej:

  1. <?php
  2. // Get the book pod object
  3. $pod = pods( 'book' );
  4.  
  5. // To add a new item, let's set the data first
  6. $data = array(
  7. 'name' => 'New book name',
  8. 'author' => 2, // User ID for relationship field
  9. 'description' => 'Awesome book, read worthy!'
  10. );
  11.  
  12. // Add the new item now and get the new ID
  13. $new_book_id = $pod->add( $data );
  14.  
  15.  
  16. // If you're already using Pods for another item
  17. $pod = pods( 'book', 4 );
  18.  
  19. // You can still an add item without effecting anything
  20. $new_book_id = $pod->add( $data );



Niestety skrypt wywala mi niezdefiniowaną funkcję, zwykłe includowanie do pliku z definicją funkcji nie pomaga, podobnie mam problem jak definiuję skrypt jako wtyczkę.
Co mam zrobić aby skrypt w fomie powyżej działał i mógł być umieszczony w dowolnym miejscu w instalacji Wordpressa?
Mile widziane najprostsze rozwiązania
dzięki
Go to the top of the page
+Quote Post
sowiq
post 14.01.2015, 12:17:55
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dodaj na początku Twojego pliku:

  1. include '../../sciezka/do/pliku/wp-load.php';


Uprzedzając pytanie dodam, że musisz tam podać ścieżkę do pliku wp-load.php z głównego katalogu Twojej instalacji WP.

Ten post edytował sowiq 14.01.2015, 12:18:36
Go to the top of the page
+Quote Post
mikolajjj
post 14.01.2015, 14:32:32
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


zrobiłem include wp-load.php z katalogu głównego i include do pliku z definicją funkcji. nadal mam undefined function. czy lokalizacja skryptu (np. jeśli jest po za znaczeniem pluginów) ma znaczenie? nie powinno chyba skoro odpalam skrypt ręcznie.
Go to the top of the page
+Quote Post
sowiq
post 14.01.2015, 15:12:00
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A jesteś pewien, że wtyczka, o której piszesz, jest aktywna i że udostępnia taką funkcję?

Zrób prosty test - w pliku functions.php Twojej templatki dodaj:

  1. $pod = pods( 'book' );
  2. var_dump($pod);


Jeśli w dalszym ciągu dostaniesz błąd to znaczy, że musisz znaleźć i ręcznie include'ować plik, który tę funkcję definiuje.
Go to the top of the page
+Quote Post
mikolajjj
post 15.01.2015, 13:09:07
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


poniżej to co chę zrobić:

  1.  
  2. <?php
  3. include 'http://www.{mój adres}/wordpress/wordpress/wp-load.php';
  4. include 'http://www.{mój adres}/wordpress/wordpress/wp-content/plugins/pods/includes/classes.php';
  5. include 'http://www.{mój adres}/wordpress/wordpress/wp-content/plugins/pods/classes/Pods.php';
  6. include 'http://www.{mój adres}/wordpress/wordpress/wp-content/themes/twentytwelve/functions.php';
  7.  
  8. $pod = pods( 'events' );
  9.  
  10. // dane będą sobie pobierane skądinąd i dodawane jak poniżej
  11. $data = array('nazwa' => 'aaaa,
  12. 'miejsce' => 'aaaa'
  13. );
  14.  
  15. $new_event_id = $pod->add( $data );
  16.  
  17. ?>

działa tylko w jednym miejscu - function.php templatki (tam nie muszę incluidować, pobierane dane z wtyczki Pods) , tak, że za każdym refreshem jakiejkolwiek strony dodaje treść do postu typu event (czyli to co chcę osiągnąć), ale nie w ten sposób. chcę aby kod poniższy był odpalany ręcznie.

sama funkcja jest ok, robię jakieś złe adresowanie. funkcja traci aktywność poza plikiem functions.

na pewno dobrze includuję zgodnie z referencją dwóch funkcji przynależnych wtyczce Pods:
http://pods.io/docs/code/pods/
http://pods.io/docs/code/pods/add/

wszędzie indziej mam:
Call to undefined function pods()

także wtedy gdy tworzę wtyczkę tym samym kodem.


czy to może być kwestia, że nie opiewam całości add_action albo coś podobnego? chcę ingerować gołym prostym skryptem w dane CPT a nie w sam frontend.

robię jakiś bardzi głupi błąd, ale nie wiem jaki










[/php]

Ten post edytował mikolajjj 15.01.2015, 13:09:45
Go to the top of the page
+Quote Post
grzes999
post 15.01.2015, 15:32:33
Post #6





Grupa: Zarejestrowani
Postów: 305
Pomógł: 29
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


Tutaj masz błąd

  1. include 'http://www.{mój adres}/wordpress/wordpress/wp-load.php';
  2. include 'http://www.{mój adres}/wordpress/wordpress/wp-content/plugins/pods/includes/classes.php';
  3. include 'http://www.{mój adres}/wordpress/wordpress/wp-content/plugins/pods/classes/Pods.php';
  4. include 'http://www.{mój adres}/wordpress/wordpress/wp-content/themes/twentytwelve/functions.php';


includy zrób ze ściążką do pliku a nie adres url, dodatkowo sprawdź czy te pliki istnieją.

Ten post edytował grzes999 15.01.2015, 15:36:29
Go to the top of the page
+Quote Post
mikolajjj
post 15.01.2015, 15:53:20
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


tak wiem, dodatkowo nie miałem wp-blog-header.php, a ten plik robi całą imprezę, działa)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.05.2025 - 05:25