質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • PHP

    20307questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7192questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • SQL

    2387questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • phpMyAdmin

    649questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

  • SQL Server

    590questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

WordpressでSQL文を使ってカスタムフィールドを表示させたい

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 4,481

ByronHasegawa

score 246

WordpressでSQL文を使ってカスタムフィールドを表示させたいです。

【理想の表示】
投稿の一覧ページ


タイトル:
コンテンツ内容:
抜粋:
カスタムフィールド1:
カスタムフィールド2:
カスタムフィールド3:

タイトル:
コンテンツ内容:
抜粋:
カスタムフィールド1:
カスタムフィールド2:
カスタムフィールド3:

タイトル:
コンテンツ内容:
抜粋:
カスタムフィールド1:
カスタムフィールド2:
カスタムフィールド3:

タイトル:
コンテンツ内容:
抜粋:
カスタムフィールド1:
カスタムフィールド2:
カスタムフィールド3:

【問題】
カスタムフィールドだけが全て同じ内容表示されます。

下記がソースです。

<?php


$mydb = new wpdb('user','password','databasename','hostname');

$result = $mydb->get_results("
    SELECT post_title, id, guid, post_excerpt
    FROM wp_posts
    WHERE post_type = 'voice'
    AND post_status = 'publish'     /* かつ公開済の記事 */
    ORDER BY post_date DESC         /* 新しい順に並び替え */");

$thumb = $mydb->get_var("SELECT ID FROM $wpdb->posts where post_parent = '$value' and post_type = 'attachment'");
$thumbnail = wp_get_attachment_image_src($thumb);


$meta_key = 'letter_short';
$letter_short = $mydb->get_var( $mydb->prepare( 
    "
        SELECT meta_value
        FROM wp_postmeta         
        WHERE meta_key = %s

    ", 
    $meta_key
) );


$meta_key = 'letter_all';
$letter_all = $mydb->get_var( $mydb->prepare( 
    "
        SELECT meta_value
        FROM wp_postmeta         
        WHERE meta_key = %s
    ", 
    $meta_key
) );

$meta_key = 'description';
$description = $mydb->get_var( $mydb->prepare( 
    "
        SELECT meta_value
        FROM wp_postmeta         
        WHERE meta_key = %s
    ", 
    $meta_key
) );




$meta_key = 'comment';
$comment = $mydb->get_results("
    SELECT post_title, post_content, guid, ID, meta_value /* 値を取り出す */
    FROM wp_posts /* テーブルを指定 */
    INNER JOIN wp_postmeta AS m1
    ON m1.post_id = wp_posts.ID /* テーブルを結合-カスタムフィールド */
    AND m1.meta_key = 'comment' /* テーブルを結合しカスタムフィールドの値を指定 */
", 
    $meta_key);




foreach ($result as $obj) :
    echo "<div id='post-".$obj->id."' class='post type-post status-publish format-standard hentry category-sonota'>";
    echo "<a class='relatedimg' style='text-decoration:none;' href=\"". get_permalink($value+0) . "\" title=\"". $zg_title_out->post_title . "\"><img src='" .$thumbnail[0]. "' alt='Release Image' />" . $zg_title_out->post_title . "</a>";
    echo "<h3>";
    echo "<a href=".$obj->guid.">";
    echo "$obj->post_title";
    echo "</a>";
    echo "</h3>";
    echo "<p>$obj->post_excerpt</p>";
    echo "<p>カスタムフィールド1: {$letter_short}</p>";
    echo "<p>カスタムフィールド2 : {$letter_all}</p>";
    echo "<p>カスタムフィールド3: {$description}</p>";
    echo "<p>コメント: {$comment}</p>";
    echo "</div>";
endforeach;



?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takutok

    2015/12/24 14:18

    カスタムフィールドだけが全て同じ内容表示されます。というのは、カスタムフィールド1、カスタムフィールド2、カスタムフィールド3のフィールドが同じ内容ということですか?記事ごとにカスタムフィールドの内容が違うということでしょうか?具体的にどういう結果になってほしいのかわからないのでわからないです。

    キャンセル

  • ByronHasegawa

    2015/12/24 15:17

    カスタムフィールドの内容は全て違います。 それぞれの記事に投稿したカスタムフィールドの内容を取得したいです。

    キャンセル

回答 2

check解決した方法

0

解決しました。

いろいろと試行錯誤した結果でした。

こちらがそのソースです。

//その他DB接続設定
$another_db_user = 'user';
$another_db_pass = 'pass';
$another_db_name = 'name';
$another_db_host = 'host';
$another_tb_prefix = 'tb_prefix';

$mydb = new wpdb($another_db_user,$another_db_pass,$another_db_name,$another_db_host);
$mydb->set_prefix($another_tb_prefix);


//一覧情報取得
$result = $mydb->get_results("
    SELECT post_title, id, guid, post_excerpt, m1.meta_value AS 'short', m2.meta_value AS 'all', m3.meta_value AS 'des', m4.meta_value AS 'com'
    FROM $wpdb->posts
    INNER JOIN $wpdb->postmeta AS m1
    ON m1.post_id = $wpdb->posts.ID /* テーブルを結合-カスタムフィールド */
    INNER JOIN $wpdb->postmeta AS m2
    ON m2.post_id = $wpdb->posts.ID /* テーブルを結合-カスタムフィールド */
    INNER JOIN $wpdb->postmeta AS m3
    ON m3.post_id = $wpdb->posts.ID /* テーブルを結合-カスタムフィールド */
    INNER JOIN $wpdb->postmeta AS m4
    ON m4.post_id = $wpdb->posts.ID /* テーブルを結合-カスタムフィールド */
    WHERE post_type = 'voice'
    AND post_status = 'publish'     /* かつ公開済の記事 */
    AND m1.meta_key = 'letter_short'
    AND m2.meta_key = 'letter_all'
    AND m3.meta_key = 'description'
    AND m4.meta_key = 'comment'
    ORDER BY post_date DESC         /* 新しい順に並び替え */");

$thumb = $mydb->get_var("SELECT id FROM wpd27b99posts WHERE post_parent = '$value' and post_type = 'attachment'");
$thumbnail = wp_get_attachment_image_src($thumb);


//表示
foreach ($result as $obj) :
    echo "<div id='post-".$obj->id."' class='post type-post status-publish format-standard hentry category-sonota'>";
    echo "<a class='relatedimg' style='text-decoration:none;' href=\"". get_permalink($value+0) . "\" title=\"". $zg_title_out->post_title . "\"><img src='" .$thumbnail[0]. "' alt='ここに画像' />" . $zg_title_out->post_title . "</a>";
    echo "<h3>";
    echo "<a href=".$obj->guid.">";
    echo "$obj->post_title";
    echo "</a>";
    echo "</h3>";
    echo "<p>$obj->post_excerpt</p>";
    echo "<p>本文(短め): {$letter_short}$obj->short</p>";
    echo "<p>手紙の本文(全文) : {$letter_all}$obj->all</p>";
    echo "<p>概要: {$description}$obj->des</p>";
    echo "<p>コメント: {$comment}$obj->com</p>";
    echo "</div>";
endforeach;

?>
コード

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

すみません、質問の意図を汲んでいないかもしれませんが・・・・

普通にWPの関数で下記のように
http://www.koikikukan.com/archives/2011/02/03-015555.php
http://office7f.com/2014/12/18/wordpress-meta-query/
すれば表示できるのでは???

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/22 18:32

    すみません、WP関数ではなく、SQL文で取得したいです。

    別のデータベースから取得しているためです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20307questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7192questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • SQL

    2387questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • phpMyAdmin

    649questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

  • SQL Server

    590questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。