WPサイトが2つあります。私はそれらのうちの1つから他のものに手を差し伸べ、そして投稿のための特定の注目の画像を検索し、そしてその投稿へのリンクでそれらを表示したいです。
私はこの行を使っています(私のターゲットデータベースのための正しい情報で):
$mydb = new wpdb('username','password','database','localhost');
投稿のサムネイルを取得して表示するにはどうすればよいでしょうか。
私は他の場所で見つけたこのようなコードの行をいじっています。
$result = $mydb->get_results("select * from wp_posts where ID='1885'");
'1885'はサンプルの投稿ID番号です。
理想的な世界では、私はそれがウィジェットとして機能するところまでこれを発展させるでしょう。クライアントは外部のWPサイトから投稿ID番号を入力するだけで、ウィジェットは適切なサムネイルを取得し、それを他のサイトの適切な投稿へのリンクとして表示することができます。
私はPHPについてまったく知識がありません。これまでのところ、スニペットを操作してそれらを私のテーマテンプレートに組み入れるだけで最善を尽くします。
2つのサイトをリンクしようとしているときはいつでも、最も効率的で最も破壊的でない方法は、WordPress XMLRPC APIを使用することです。 http://codex.wordpress.org/XML-RPC_WordPress_API/Posts
この場合は、組み込みのIXR_Clientライブラリを使用してこの情報を取得できます。これにより、コードを書いたりデータベースを混在させたりする時間を大幅に節約できます。ある時点で完全に異なるサーバーに巻き込まれた場合。あなたはまだこの仕事をすることができます。
それはほとんどこれだけです...
$client = new IXR_Client(XMLRPC_URL);
$client->timeout = 1;
$USER = XMLRPC_USER;
$PASS = XMLRPC_PASS;
$req = 'wp.getPost';
$post_id = 112;
if (!$client->query( $req, $post_id, $USER, $PASS ))
{
die( 'Error while creating a new post' . $client->getErrorCode() ." : ". $client->getErrorMessage());
}
$postcontent = $client->getResponse();
投稿の注目の画像(この例では投稿1885)を取得するには、post_idとして値1885、meta_keyとして "_thumbnail_id"を持つエントリをwp_postmetaテーブルでチェックする必要があります。meta_valueの値はtypeの投稿になります。 「添付」(メディアライブラリに投稿をアップロードすると、画像ファイルごとに添付の種類の投稿が作成されます)
私はlocalhost環境で次のことをしました、そしてそれはうまくいきました:
$mydb = new wpdb( 'user', 'password', 'database', 'localhost' );
$query = "SELECT meta_value
FROM wp_postmeta
WHERE post_id = %d
AND meta_key = '_wp_attachment_metadata'
";
$p_id = 4;
$result = $mydb->get_row(
$mydb->prepare( $query, $p_id ),
ARRAY_A
) or wp_die( "Error: query failed." );
$result_array = unserialize( $result['meta_value'] );
var_dump( $result_array );
die();
$mydb->prefix
を取得することはできませんようです。
また、ユーザー入力値を扱うときは、 $wpdb->prepare
を使用してください。