ugrás a tartalomhoz

Wordpress admin módosítás, curl, ajax

therest · 2011. Szep. 2. (P), 15.22
Sziasztok!

Éppen most kontrolduplavéztem be az előzőleg megírt postomat, kezdhetem előről. :)

A feladatom az lenne, hogy automatikusan postoljak egy Facebook fal-ra minden postot egy wordpress blogról, a publikálás pillanatában. A post címét is továbbítani kell.
Pár napja már szívok vele, külsős plugin kizárva, remélem itt segít valaki, aki belelát
Már az őrület határa gugliztam magam, de a sok user szintű wordpress/facebook tartalom miatt nem találtam semmit.
Két(három) módon már közelítettem a témát, de mindegyikkel elakadtam.
A falra való kiírás az kész egy külön scriptben, természetesen a Facebookos apit használom.

1. A wordpress admin felület "publish" gombjához rendelni egy JS függvényt, abban ajaxxal hívni egy urlt, postban küldeni az adatokat, az urlen lefut a script ami kiteszi az app falára a szükséges infót. Itt megfőttem a miatt, mert képtelen vagyok megtalálni, hogy hol kerül ki a publish gomb, és hogy hol kéne a saját js függvényeket icludeolni.

2. Valahol a php kódban megejteni a dolgot:
2/a. Simán használni a Facebook libjét (require facebbok.php), és meghívni a kellő helyen az api megfelelő funkcióját. Ezt több helyen s megpróbáltam, de mindig összeomlott az admin felület.
2/b. A "publish_post" hookra akasztani egy saját függvényt, és azon belül curl-el meghívni a fent említett működő urlt, $_POST-ban elküldve a wordpress post címét. Ezzel az a probléma, hogy ahol hívásra kerül a saját függvény, ott már a headerek rég kimentek, és így a curl is feladja.

Más egyenlőre nem jutott eszembe, de a fentiek mindegyikével elhasaltam, mivel nem ismerem a wordpress adminjának struktúráját. Remélem itt lesz valaki aki igen, ad egy tuti tippet!
 
1

A 2/a, pontban mit jelent,

Hidvégi Gábor · 2011. Szep. 2. (P), 16.03
A 2/a, pontban mit jelent, hogy összeomlott az adminfelület?
3

Nem tudom már pontosan, 2

therest · 2011. Szep. 2. (P), 17.12
Nem tudom már pontosan, 2 napja hekkelem, aztán tiszta verzió visszamásol, és újrakezd. Már kb 20 verziót kipróbáltam, de nem akar összejönni. Sok fileból áll, és nyilván elég komplex (lehet csak nekem).

Arra lenne szükségem, hogy melyik az a file a wp-admin mappában és azon belül melyik függvény ami felel az új postok adatbázisba illesztéséért.

Jelenleg a wp-admin/includes/post.php -ban a wp_write_post nevű függvényre tippeltem, de úgy fest ez nem fut le. Egy log.txt nevű fájl létrehozásával próbálom ellenőrizni, hogy lefut-e az adott kódrészlet új postnál, de eddig nem találom.
2

1. A wordpress admin felület

bb0072 · 2011. Szep. 2. (P), 16.49
1. A wordpress admin felület "publish" gombjához rendelni egy JS függvényt, abban ajaxxal hívni egy urlt, postban küldeni az adatokat, az urlen lefut a script ami kiteszi az app falára a szükséges infót. Itt megfőttem a miatt, mert képtelen vagyok megtalálni, hogy hol kerül ki a publish gomb, és hogy hol kéne a saját js függvényeket icludeolni.


A saját js függvényt egy külső js file-ba kell include-olni egy onclick eseménykezelő kapcsolásával. Vagy én értek valamit félre?


Egyébként így látatlanba az 1-es megoldás a nyerő, mivel nem ismered a wp-s php felépítését, ezzel kvázi meg tudod kerülni és nem omlik össze az admin.
4

Mivel a wp adminja elég

therest · 2011. Szep. 2. (P), 17.16
Mivel a wp adminja elég moduláris, nem tudom, hol kerül "printelésre" maga a publish gomb, így nem tudom, a kódba, vagy templatebe beleilleszteni az onclick tulajdonságot. Itt is körbenéztem már, de nem lelem.

Egyébként ez sem tökéletes, mert ideális úgy lenne, ha az adatbázisba illesztés után kerülne a falra, és a falról lenne link a blogpostra, ehhez meg kéne az id amit kap.
5

RSS Graffiti

Blintux · 2011. Szep. 2. (P), 18.23
Én az egyszerűbb utat választottam és az RSS Graffiti FB applikációt használom a blogos postok üzenőfalra való postolásához. RSS-t meg ugye a WP nagyon jól testre szabhatóan biztosít.
6

Social RSS

gabesz666 · 2011. Szep. 3. (Szo), 11.19
Illetve a Social RSS is megfelelő lenne számodra!
7

A pluginokat szeretném

therest · 2011. Szep. 3. (Szo), 11.52
A pluginokat szeretném kihagyni, mert változhat a felhasználási feltételük (és azt sem tudom, hogy most milyen feltételekkel lehet használni őket), másrészről pedig maga kérdés sem hagy nyugodni. Persze, ha nem megy másképpen, végső megoldásnak jók ezek, de akkor lenne az igazi, ha kódból lenne megoldva, és nem egy harmadik félen keresztül.
8

Ezzel az a probléma, hogy

Poetro · 2011. Szep. 3. (Szo), 12.04
Ezzel az a probléma, hogy ahol hívásra kerül a saját függvény, ott már a headerek rég kimentek, és így a curl is feladja.

Ezt nem értem. A curl-nek mi köze a fejlécekhez? A fejlécek kimenete után is ki tudsz adni akár milyen parancsot, maximum nem jeleníted majd meg az aktuális oldalon a curl válaszát, hanem eltárolod az üzenetek közé (gondolom WP-ben is van valami ilyesmi), és a következő oldalon majd meg fog jelenni. Persze azt se teljesen értem, hogy miért kell erre használni a Facebook libjét, mivel az egész csak két HTTP kérésből áll. Az egyikben van autentikáció (GET kérés a https://graph.facebook.com/oauth/access_token-ra), amivel megszerzed a token-t, a másikban pedig egy POST kérés a https://graph.facebook.com/me/links oldalra, amiben pedig elküldöd a kérésedet a link beszúrására.
9

Igazad lett,a hívott urlen,

therest · 2011. Szep. 3. (Szo), 14.17
Igazad lett,a hívott urlen, egy bent hagyott var_dump miatt írt header problémát, nem volt köze a curlhöz. Úgy fest megy is, azért ide szúrom a kódot, hátha másnak kapóra jön, bár így már sima.

Az téma/facebook könyvtárban vannak az fb-re postolást végző fájlok.
A téma functions.php-jében:

function fb_publish($post_ID) {		
	$url = "http://myite/wp-content/themes/mytheme/facebook/fbwallpost.php";
	$PD = array('title' => 'New article: ' . $_POST['post_title']);
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_POSTFIELDS,$PD);	
	curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	curl_exec($ch);
	curl_close($ch);
}
add_action( 'publish_post', 'fb_publish' );