web-dev-qa-db-ja.com

管理者以外の投稿フォームを作成する

私はWordpressを既存のシステムに統合しています、そして私たちのユーザーがマルチサイトWPインストールに投稿できることを要求します。私は私たち自身のメンバーを特定のブログIDやものにリンクするデータベーステーブルを持っているので、WPに関する限りユーザー/ログインの必要はありません。

私が本当に知る必要があるのはWPの外でWP関数を実行する方法です - 全く別のドメインの事実上(しかし同じサーバー)で。既存の管理者パネルに単にwp-load.phpを含めることを試みましたが、それを行うとすぐにメインサイトにリダイレクトされます - ドメインが一致しないためと思います。

domain1.comとdomain2.comは両方とも同じサーバー上にあり、domain1.comはWP MUのセットアップ、domain2.com上の私たち自身の管理領域にあり、私はwp-load.phpを含むとすぐに私はdomain1.comのホームページに直接リダイレクトします。

それをこのようにすることがさらに望ましいですか?投稿を挿入するためにWPデータベースに直接クエリを実行した例がいくつかあります。しかしそのような場合、私はなぜこのプロジェクトにWPを使用しているのかと自問しなければなりません。私はWP XMLRPC APIを使用することを考えていますが、それ以上の能力が必要であり、実際に有効にしたくありません。

2
Dunhamzzz

わかりました。$ _SERVER変数を偽装し、いくつかの定数を事前定義することで、wp-load.phpをインクルードした後にWordpressがリダイレクトされるのを防ぐことができました。

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
Dunhamzzz

こんにちは私はプログラマーではなくハッカーであり、これを素早く機能させることができましたが、私はラッキーだったと思います。

私は "define"コマンドが私のマルチサイトダッシュボードにあるものであると思いました、そして私は私のwp_insert_postスクリプトの一番上に$ _serverコードを追加しました、そしてそれはうまくいきました。私は以下を使用しませんでした:

define('WP_USE_THEMES', false);

私は次のようにブログを選択しましたが、それはデフォルトのブログだったのでおそらく必要ではありませんでした。

global $switched; switch_to_blog(1);

それとも、スクリプトに "define"ステートメントを入れておくべきですか?

乾杯

ジャック

1
Jack Godot