web-dev-qa-db-ja.com

WPページにSQL-dbのデータを表示するためのプラグインまたはチュートリアル?

私はラズベリーパイ3の上にカスタムの気象ステーションを持っていて、ローカルのLAMPセットアップを実行しています。 sensordataはそれ自身のデータベースに格納されています。 Wordpressの仕事は、フルスクリーンブラウザを使用して、セカンダリPiに表示される表示ページのデザインを簡単に(やや)WYSIWYGで編集できるようにすることです。

私は今、私が適切な解決策を見つけることができなかった3つのやや「ユニークな」機能が必要です。

  1. データベースの最新の(リアルタイムの)データ入力(温度、湿度、風速、rainsensordata、降雨量など)のショートコードで、ページ内のデータの実際の配置を変更するのが難しくないようにします。

  2. データベースから最新のデータを取得するか、センサーエラーやその他の必要な場合に固定値を入力するかを選択するには、admin-backend(プラグイン、adminpanelentryなど)が必要です。手動エントリをデータベースに保存し、それらから選択するドロップダウンメニューを用意するのがいいでしょう。 http://i.imgur.com/TbZMFMK.png のような空想何もない

  3. 新しいデータ値を追加する「やや」簡単な方法(新しいセンサーが追加された場合)

データ要求は、Pythonによるデータベースへの書き込みによって行われます。 Pythonが独自のテーブルで直接Wordpress-DBにデータを書き込めるようにする方が簡単でしょうか。多分私がすでに必要としていることをするプラグインの場合にはすでにソフトウェアがありますか?

ありがとうございます。

4
Phish

これはかなりあいまいで広い質問ですが、私はそれを一撃します。次のコードを機能プラグインに追加することも、テーマを実行している場合は、テーマのfunctions.phpファイルに配置することもできます。 (明らかに、SQL、属性などを変更する必要があります - 単なる概念実証)

add_shortcode( 'wpse_weather_data', 'wpse_weather_data_shortcode_cb' );
function wpse_weather_data_shortcode_cb( $atts ) {
    $atts = shortcode_atts( array(
        'fallbackValue' => '',
        'sensor' => 0
     ), $atts );

     extract( $atts );

     // Make the connection to a separate database using PHP. 
     // You might want to store these credentials as constants in wp-config.php 
     // to keep all the db credentials in one place.
     $db = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
     if ( !$db ) {
         return $fallbackValue;
     }

     // Make the query
     $query = "SELECT * FROM table_name WHERE sensor = {$sensor}";
     $result = mysqli_query($db, $query);
     if ( !$result ) {
         return $fallbackValue;
     }

     $row = mysqli_fetch_array($result);
     // Put the data on the page... FYI you have to return the data from a shortcode, not echo it.
}

オプションページを作成したり、過去の値をデータベースに保存したりすることは、このフォーラムの範囲を超える方法ですが、これを実行する方法がわかります。ショートコードに異なる属性を追加することで(#3ごとに)カスタマイズできます。たとえば、ここでは、追加のセンサーを追加したり、コンテンツ内のどこかにショートコードを配置してそのように呼び出してフォールバック値を指定することができます。[wpse_weather_data sensor="0" fallbackValue="Could not fetch sensor data"]

これが正しい方向に進むことを願っています。

1
brianjohnhanna