Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt automatycznie publikujący posty o danej godzinie codziennie
Forum PHP.pl > Forum > PHP
Ascoran
Witam,

Strona postawiona na wordpress

Interesowałby mnie skrypt który automatycznie losowałby (obrazek + tekst) z powiedzmy bazy danych lub jakiegoś pliku a następnie dodawał takowy post na stronę - pełen automat.

Tzn, ja wrzucę do bazy gotową listę tekstów a do jakiegoś folderu zdjęcia z kolejnymi liczbami (1.png, 2.png, 3.png itp) i chciałbym żeby skrypt o danej godzinie losował tekst z całej puli dostępnej w bazie oraz dodawał do tego zdjęcie (również może być losowe - lub może jechać po kolei).

Za każdą pomoc serdecznie dziękuje.

Myślę że podałem wystarczająco dużo informacji aby zrozumieć o co mi chodzi.
Za szybką i skuteczną pomoc możliwy drobny przelew lub paypal smile.gif

Takowe posty mają się pojawiać w godzinach 8:00, 12:00, 15:00 i 21:00 codziennie i najlepiej jak by publikacje nie wymagały niczyjej obecności - gdyż nie zawsze w tych godzinach ktoś może się pojawić.
kapslokk
1. Skrypt będzie odpalany cronem
2. Przy pomocy readdir() stworz sobie tablicę zdjęć, później użyj array_rand() aby wylosować jedno z nich
3. Jak wylosować tekst z bazy mysql możesz przeczytać np tutaj: http://blog.vokiel.com/mysql-rand-jak-pobrac-losowe-wiersze/ - swoją drogą to blog osoby z forum jeśli nick nie kłamie smile.gif
4. Jeśli chcesz zapłacić za to to chyba niżej jest odpowiedni dział do tego.
session
Zakładam, że to jak pobrać dane z bazy wiesz. Teksty najlepiej poindeksować, żeby szybko losować, jeśli zdecydujesz się na bazę MySQL możesz losować już w zapytaniu, używając jednego ze sposobów na MySQL RAND()
  1. SELECT `id`,`tekst` FROM `teksty` JOIN (SELECT CEIL(RAND() * (SELECT MAX(`id`) FROM `teksty`)) AS 'id') AS rows USING (`id`);

EDIT: czyli dokładnie tak jak opisał to kolega wyżej wink.gif tongue.gif

Wygenerowanie listy plików i wybranie losowego (nie musisz koniecznie numerować plików):
  1. $directory='/path/'; // katalog z plikami
  2. $files=array_diff(scandir($directory), array('..', '.'));
  3. $file=array_rand($files, 1); // array_rand() odpowiada za losowanie pliku z tablicy


Jeśli obrazek jest powiązany z tekstem to w bazie przechowuj jego nazwę wtedy powyższy etap możesz pominąć.

Dodawanie postu w WP: wp_insert_post
Dodawanie obrazka do postu: wp_insert_attachment

  1. $post=array(); // wypełnij danymi pobranymi z MySQLa
  2. $attachment=array(); // możesz wypełnić tak jak w przykładzie z Codexa
  3. $path=''; // ścieżka do obrazka
  4.  
  5. $postID=wp_insert_post( $post, false );
  6. $attaID=wp_insert_attachment( $attachment, $path, $postID );
  7. wp_generate_attachment_metadata( $attaID, $path );


Powyższy kod jest tylko wskazówką, trzeba go dopracować. Jeśli napiszesz taki skrypt, który będzie działał to zostaje ostatnia rzecz
Cytat
pełen automat [...] najlepiej jak by publikacje nie wymagały niczyjej obecności

tutaj najłatwiej będzie użyć Crona, z tym że Twój usługodawca musi dać Ci taką możliwość, ale cron staje się coraz bardziej popularny. Sposób dodawania zadań do tablicy crona często też zależy od usługodawcy, np: cron home, cron linuxpl, ogólnie na serwerach linuxowych: cron tutorial

EDIT: pamiętaj, żeby skrypt korzystający z funkcji WordPressa działał musi wiedzieć jak je wykonać, zatem musisz zaincludować wp-load.php do swojego skryptu
Ascoran
Dzięki za rady, w poniedziałek spróbuje to wykonać i dam znać czy działa.
Mój hosting obsługuje crona więc nie będzie problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.