Создание формы публикации вне администратора


Я объединяю Wordpress с существующей системой и требую, чтобы наши пользователи могли размещать сообщения на нескольких сайтах WP. У меня есть таблица базы данных, которая свяжет нашего собственного участника с определенными идентификаторами блога и прочим, поэтому в отношении WP не будет необходимости в пользователях/логинах.

Что мне действительно нужно знать, так это как запускать определенные функции WP за пределами самого WP - на совершенно другом домене (но на том же сервере). Я попытался просто включить wp-load.php в нашей существующей панели администратора, но как только я это делаю, она перенаправляется на основной сайт - я предполагаю, потому что домены не совпадают:

Domain1.com и domain2.com оба находятся на одном сервере, domain1.com является ли настройка WP MU включенной domain2.com в нашей собственной административной области я включаю wp-load.php и как только я это сделаю, он перенаправит меня прямо на домашнюю страницу domain1.com .

Предпочтительнее ли вообще делать это таким образом? Я видел несколько примеров, когда люди напрямую обращались к WP база данных для вставки сообщений. но если это так, я должен спросить себя, почему я вообще использую WP для этого проекта?! Я подумываю об использовании API WP XMLRPC, но мне нужно больше энергии, чем это, и я не хочу включаться на самом деле.

Author: Dunhamzzz, 2011-03-03

2 answers

Хорошо, я взломал его, подделав переменную $_SERVER и предварительно определив некоторые константы, я смог предотвратить перенаправление Wordpress после включения wp-load.php .

define('WP_USE_THEMES', false);
define( 'DOMAIN_CURRENT_SITE', $siteRow['domain'] );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', $siteRow['wp_blog_id'] );

$_SERVER = array(
    "HTTP_HOST" => $siteRow['domain'],
    "SERVER_NAME" => $siteRow['domain'],
    "REQUEST_URI" => "/",
    "REQUEST_METHOD" => "GET"
);

require_once WP_PATH.'wp-load.php';
switch_to_blog($siteRow['wp_blog_id']);

$siterow содержит подробную информацию о целевом сайте. Примечание : Это не может быть внутри функции из-за ограничений глобальных переменных.

 3
Author: Dunhamzzz, 2011-04-27 13:21:21

Привет Я хакер, а не программист, и мне удалось быстро заставить это работать, но я думаю, что мне повезло.

Я предположил, что команды "определить" были тем, что было в моей многоузловой панели мониторинга, и я добавил код $_server в начало моего скрипта wp_insert_post, и это сработало. Я не использовал следующее:

define('WP_USE_THEMES', false);

Я использовал следующее для выбора блога, хотя, поскольку это был блог по умолчанию, возможно, в этом не было необходимости:

global $switched; switch_to_blog(1);

Или я должен был поставить операторы "определить" в сценарий?

Приветствия

Джек

 1
Author: Jack Godot, 2011-03-17 08:45:43