Постване във FB стена с php от Wordpress сайт

тео

Well-Known Member
Една седмица се главоблъскам да свържа Wordpress + php скрипт + Facebook. Справих се и ето накратко как става:

Какъв е сайтът. Сайтът е за онлайн тестове.
Тестовете се правят с помощта на php, БД, има отделна администрация, в която се попълват самите тестове, техните отговори и точкуването. Работи напълно самостоятелно. Недостатъците - никаква възможност за нормално СЕО, външния вид е ужасен.
УП за основа на сайта. Включени разширения - Exec-PHP и WP-FB-AutoConnect.

Какво трябва да се направи за да се свържат
Wordpress-а, php скрипта и Facebook, така че ако посетителя влезе със своя ФБ профил, резултата от теста да се публикува на стената му.
1. УП+php
УП е инсталиран в главната директория, тестовете - в ../test/
Php скриптът генерира адрес на теста и резултати от него във вида:
Код:
[URL]http://example.com/test/test.php?id=1[/URL]
[URL]http://example.com/test/result.php[/URL]
за  външния вид на тестовете и резултатите се използват 2 html файла
[URL]http://example.com/test/test.html[/URL]
[URL]http://example.com/test/result.html[/URL]
За да се показват тестовете като публикации е необходимо разширението Exec-PHP. Предимството му пред другите подобни е, че може да изпълнява php с параметри (в случая ?id=1). Трябва да се забрани визуалния редактор на УП, защото разбърква въведения код (става от настройките на разширението).
Когато публикувате нов пост, въвеждате следния код:
PHP:
<?php  include "http://example.com/test/test.php?id=1";   ?>
Това ще вмъкне цялата страница във вашия пост. Необходимо е да зачистите всякакъв html код от test.html, за да се форматира теста, както е темата на шаблона ви.

2. УП + Facebook
За да го направите

  1. Посещавате www.facebook.com/developers/createapp.php
  2. Пишете името на страницата ви (не адреса).
  3. Във "Web Site" попълвате "Site URL" (http://example.com/ - накрая с /). В Site Domain попълвате само домейна: example.com.
  4. "Save Changes."
  5. Записвате си Application ID и Application Secret.
  6. "Save"
Във УП инсталирате WP-FB-AutoConnect, задавате Application ID и Application Secret и отмятате Announcement: Request permission to post the following announcement on users' Facebook walls when they connect for the first time. Тази отметка е необходима за да искате permission да пишете на стената на посетителя.
Външен вид > Джаджи > поставяте WP-FB-AutoConnect.

3. php + Facebook
Първо е необходимо да си свалите този ФБ клас от Glithub. Разархивирайте и качете на сайта си файла facebook.php. Ако искате, направете си директория и го сложете там.
Втора стъпка е да създадем файл, който ще прави връзката между сайта и профила на посетителя:
PHP:
<?php

require 'facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'хххххххххх',
  'secret' => 'хххххххххх',
  'cookie' => true,
));

$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}
?>
Кръщаваме файла например fbaccess.php и го запазваме при facebook.php.
Трета стъпка - добавяме в началото на кода на
Код:
[URL="http://example.com/test/test.php?id=1"]http://example.com/test/test.php[/URL]
PHP:
require_once('fbaccess.php');
(упоменете пътя, ако е необходимо)
Това е необходимо за това, всеки път когато се обработи теста, да се извиква fbaccess.php.
Четвърто (и последно) - необходимо е да се добави код най- накрая на
Код:
[URL]http://example.com/test/result.html[/URL]
Този код реално изпраща текст към ФБ стената на посетителя:
PHP:
<?php
$messageto = ("Какъвто текст искате. Може да слагате най-различни променливи от
 вашия скрипт. $promenliva1, $promenliva2. Още текст $promenliva3... ");
$status = $facebook->api('/'.$user.'/feed/', 'POST', array('message' =>  $messageto, 'link' => 'example.com'));
?>
Този скрипт трябва да се сложи най-отдолу, защото ако посетителят не е влязъл с ФБ профила си, изпълнението на страницата спира до тук.

Това е!

Какво се случва на практика.
а)Влиза посетител. Не се логва. Прави тест - показва му се резултат.
б)Влиза посетител. Логва се. Ако се логва за първи път му се иска да даде разрешение, сайтът да има право да поства на стената му. Прави тест. Показва му се резултат и едновременно с това, резултатът се поства на стената му във ФБ:D

Ако искате да видите на живо - тест

NB. Ще съм много благодарен на всякакви забележки, съвети и коментари към кода, като имате предвид, че не съм програмист - рових, четох, това открих.
NB2. Също и за сайта :)
 
От: Постване във FB стена с php от Wordpress сайт

Mного полезно, мерси.
А може ли да се направи така, че още при посещението да се пише в стената на потребителя ?
Ако посетителят е дал разрешение да му пишеш на стената, защо не? Само кодът трябва да се постави на различно място.
Този код реално изпраща текст към ФБ стената на посетителя:
PHP:
      <?php
$messageto = ("Какъвто текст искате. Може да слагате най-различни променливи от
 вашия скрипт. $promenliva1, $promenliva2. Още текст $promenliva3... ");
$status = $facebook->api('/'.$user.'/feed/', 'POST', array('message' =>  $messageto, 'link' => 'example.com'));
?>
И разбира се да се промени от къде да се вика
PHP:
      require_once('fbaccess.php');
 

Горе