wpdb = $wpdb; $this->tableName = $wpdb->prefix . $tableName; $this->relationshipColumnName = $relationshipColumnName; } public function persist( $relationshipID, $metaData ) { $values = array_map( function ( $metaKey, $metaValue ) use ( $relationshipID ) { return sprintf( "( %s, '%s', '%s' )", $relationshipID, esc_sql( $metaKey ), esc_sql( $metaValue ) ); }, array_keys( $metaData ), $metaData ); $this->wpdb->query( $this->getSql( $values ) ); } protected function getSql( $values ) { $format = "INSERT INTO $this->tableName {$this->getColumns()} VALUES %s"; return sprintf( $format, implode( ',', $values ) ); } protected function getColumns() { return sprintf( '( %s, meta_key, meta_value )', $this->relationshipColumnName ); } }