0

そのため、メインの WordPress サイトからデータを取得し、それを外部ページで使用する必要があります。

私の WordPress サイトはドメインのルートにありますが、外部ページは /community/library/somethingelse/page.php の下にあります。

とにかく、次のコードを使用して関数にアクセスします

<?php require('/path/to/my/wp-blog-header.php'); ?>

これを使用すると、アクセスしようとすると次のエラーが表示されますpage.php

This Plugin Requires WordPress 3.1+ or Greater: Activation Stopped!

誰かがこれに対する可能な解決策を持っているなら、それは素晴らしいことです!

この質問を満たす答えは文字通りありません。なぜこれが起こっているのか、それを克服する方法を誰かが理解できれば、それは素晴らしいことです. WordPress の機能は引き続き使用したいのですが、データベースに直接アクセスしたくありません。

4

1 に答える 1

1

少し前に同じことをする必要がありましたが、プロジェクトに多くの「不要な」ファイルを含めずにその警告を回避することは困難です。

「不要」と言っているのは、それらが必要だからですが、アプリケーションにデータをプルするだけでは多すぎます。

あなたの環境で可能であれば、私が行った方法は、データベースに直接クエリを実行することです。たとえば、投稿にアクセスする必要がある場合は、wp_postsテーブルをクエリします。

ユーザーごとに投稿をプルする必要がある場合は、データベースに直接クエリを実行できるはずです。htmlentitiesセキュリティ上の観点から、たとえばphpで使用するなど、すべての出力をサニタイズする必要があります。

現在のバージョンの PHP のデータベース スキーマは次のとおりです (お使いのバージョンでは異なる場合があります)。

http://codex.wordpress.org/File:WP3.0-ERD.png

何かのようなもの:

SELECT * FROM wp_posts WHERE post_author = 1

管理者ユーザーが書いたすべての投稿を提供する必要があります。

wp_config.php を含めてデータベース資格情報にアクセスし、次の方法で PDO (または mysqli) を使用してデータベースに接続できます。

require('path/to/wp_config.php');
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$sql = "SELECT post_date, post_title, post_content FROM wp_posts WHERE post_author = ?";
$statement = $mysqli->prepare($sql);
$statement->bind_params("i", $user_id);
$statement->bind_result($post_date, $post_title, $post_content);
$user_id = 1;
$statement->execute();
while($statement->fetch() {
    echo "{$post_date}\n{$post_title}\n{$post_content}";
}
$statement->close();
$mysqli->close();

以前に mysqli を使用したことがない場合は、次の 2 つのリンクで詳細を読むことができます。

http://www.php.net/manual/en/mysqli.quickstart.connections.php

http://www.php.net/manual/en/mysqli-stmt.fetch.php

また、一部の投稿には bb タグ、リッチ テキスト、および Wordpress が処理するその他のさまざまなものが含まれる場合がありますが、データベースに直接クエリを実行する場合は、HTML タグ (h1 など) をホワイトリストに登録する必要があります。 BB コードパーサー。

別の方法として、空白の Wordpress テンプレートを作成し、iframe を介してアプリケーションに含めることもできます。

ただし、それを実現するには、同じブログで 2 つのテンプレートをアクティブにするために、同じデータベース構成で wordpress ブログの複製を作成する必要がある場合があります。「空白」のテンプレートは、ユーザー ビューから隠されます。

もう 1 つの方法は、RSS リーダーを作成することですが、ユーザーごとに RSS フィードを取得できるかどうかはわかりません。

于 2013-07-12T04:43:15.823 に答える