サポート » その他 » カスタムフィールドの独自DB登録

  • [ O S ] Windows 10
    [Server] XAMPP 7.3.22
    [ PHP ] 7.4.10
    [ D B ] MariaDB 10.3.15
    [ W P ] 5.5.1-ja

    会員情報をカスタムフィールドで管理しようと思っています。

    初期ブログ(ブログID:1)の特定の固定ページ(ページID:6885)にて、カスタムフィールド【繰り返しフィールド】を用いて、会員名簿を作成しました。

    この会員名簿を、マルチサイト版拡張ブログ(ブログID:18)での集計結果を、データベース上で結合して結果を表示させたいと思っています。

    そのため、初期ブログの会員情報を一時的にでもデータベースに登録し、別途用意する拡張ブログから抽出したデータと、テーブルを結合させて表示させようと考えています。

    初期ブログにおける会員情報を読み込むために考えたコードはこちらになります。

    <?php
    
    // 初期BLOG(blogID:1)データへ切替
    if (get_current_blog_id() != 1) {
    	switch_to_blog(1);
    
    // 会員情報の取得
    if ( have_rows( 'list' ) ) :
    	while ( have_rows( 'list' ) ) : the_row();
    		$num	= get_sub_field( 'num' );
    		$class	= get_sub_field( 'class' );
    		$name	= get_sub_field( 'name' );
    		$pos	= get_sub_field( 'pos' );
    	endwhile;
    endif;
    restore_current_blog_id();
    }
    ?>

    これを集計結果として表示させたいテーマの独自テンプレートに埋め込むつもりです。

    これを下記SQL文のようなテーブルを用意し、集計結果表示後、テーブルごと削除する流れで作成したいと思っています。

    $sql = "CREATE TABLE ComDirectory (
    	num int(5) 		DEFAULT NULL COMMENT '会員番号',
    	class text		DEFAULT NULL COMMENT '所属',
    	name text,		DEFAULT NULL COMMENT '氏名',
    	pos text		DEFAULT NULL COMMENT '役職'
    	)
    	CHARACTER SET 'utf8';
    ";

    データベーステーブル(ComDirectory)を新規に作成し、会員名簿をデータベースとして登録するにはどうすればよいのか教えていただけますでしょうか。
    合わせて、処理完了後テーブルを削除する方法についてもお教えいただけると嬉しいです。

    お忙しい中恐縮いたしますが、よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック投稿者 heysister721

    (@heysister721)

    公式サイトのドキュメントを参考にして、次のように作成してみましたが、データベースには登録されませんでした。

    https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8B

    設置した場所は、テーマの独自テンプレートです。

    <?php
    
    global $jal_db_version;
    $jal_db_version = '1.0';
    
    function jal_install() {
    	global $wpdb;
    	global $jal_db_version;
    	
    	$table_name = $wpdb->prefix . 'liveshoutbox';
    	
    	$charset_collate = $wpdb->get_charset_collate();
    	
    	$sql = "CREATE TABLE $table_name (
    	num		int(5) NOT NULL AUTO_INCREMENT COMMENT '会員番号',
    	class	varchar(32) DEFAULT NULL COMMENT '所属',
    	name	varchar(16) DEFAULT NULL COMMENT '氏名',
        pos		varchar(8) DEFAULT NULL COMMENT '役職',
        UNIQUE KEY num (num)
      ) $charset_collate;";
    
      require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
      dbDelta( $sql );
    
      add_option( 'jal_db_version', $jal_db_version );
    }
    
    function jal_install_data() {
     	global $wpdb;
    	
    	$table_name = $wpdb->prefix . 'liveshoutbox';
    	
    	
    	if ( have_rows( 'list' ) ) :
    		while ( have_rows( 'list' ) ) : the_row();
    			$num	= get_sub_field( 'num' );
    			$class	= get_sub_field( 'class' );
    			$name	= get_sub_field( 'name' );
    			$pos	= get_sub_field( 'pos' );
    			
    			$wpdb->insert(
    			$table_name,
    			array(
    				'num'	=>	$num,
    				'class'	=>	$class,
    				'name'	=>	$name,
    				'pos'	=>	$pos,
    				)
    			);
    		endwhile;
    	endif;
    }
    
    ?>
    トピック投稿者 heysister721

    (@heysister721)

    すみません。

    先程投稿したものは、本来「プラグインとして」有効となるものなのに、早とちりしてテンプレートに埋め込んでしまいました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドの独自DB登録」には新たに返信することはできません。