私は2つのデータベースを持っています。データベース接続(with a include('filename.php');
)を含めると、wordpressの動作が本当におかしくなります。
ログインできません。ワードプレスのユーザー名とパスワードは正しいですが、他のデータベースに接続しようとします(デバッグをオンにすると表示されます)。
WordPress database error: [Table 'api.apiwp_options' doesn't exist]
SELECT option_value FROM apiwp_options WHERE option_name = 'widget_pages' LIMIT 1
WordPress database error: [Table 'api.apiwp_options' doesn't exist]
SELECT option_value FROM apiwp_options WHERE option_name = 'widget_calendar' LIMIT 1
WordPress database error: [Table 'api.apiwp_options' doesn't exist]
SELECT option_value FROM apiwp_options WHERE option_name = 'widget_links' LIMIT 1
WordPress database error: [Table 'api.apiwp_options' doesn't exist]
SELECT option_value FROM apiwp_options WHERE option_name = 'widget_tag_cloud' LIMIT 1
WordPress database error: [Table 'api.apiwp_options' doesn't exist]
SELECT option_value FROM apiwp_options WHERE option_name = 'widget_nav_menu' LIMIT 1
それは彼らが接続を分離できないようなものです。正しい方向に私を助けることができる何か?
コンテンツも機能しなくなります。
編集:消去
私のデータベース接続:
function ir_mysql() {
global $dbm;
if(empty($dbm)){
$dbm = new Mysql(DBHOST, DBUSER, DBPASS, DBNAME);
}
return $dbm;
}
mysql.class.php
class Mysql {
// Variabler
// -----------------------------
private $db;
private $user;
private $password;
private $Host;
private $linkid;
private $result;
function __construct($Host, $user, $password, $db) {
try {
$this->db = $db;
$this->user = $user;
$this->password = $password;
$this->Host = $Host;
$this->connect();
$this->select();
mysql_set_charset('utf8', $this->linkid);
} catch (exception $e) {
die($e->getMessage());
}
}
function Connect() {
try {
$this->linkid = mysql_connect($this->Host, $this->user, $this->password);
if (!$this->linkid) {
throw new Exception(mysql_error());
}
} catch (Exception $e) {
die($e->getMessage());
}
}
function Select() {
try {
if (!mysql_select_db($this->db, $this->linkid)) {
throw new Exception("Cannot access the selected database");
}
} catch (Exception $e) {
die($e->getMessage());
}
}
function Query($sql) {
try {
$this->result = @mysql_query($sql, $this->linkid);
if (!$this->result) {
throw new Exception("Mysql query error: \n <br />" . mysql_error() . "<br />" . mysql_errno());
}
} catch (Exception $e) {
if (ir_admin()) {
die($e->getMessage());
}
}
return $this->result;
}
function Close() {
mysql_close($this->linkid);
}
}
だから、私が何か新しいことを問い合わせているのなら、私はこのようにする:ir_mysql()->query("SELECT....");
私の方法とワードプレスの方法はうまく機能していません。
誰かが興味を持った場合。私はそれを機能させました。
私はプラグインを作り、メインのphpファイルにこれを書きました。
<?php
function ir_load(){
include_once(ABSPATH . 'load.php');
}
function db_fix_login(){
global $wpdb;
$wpdb->select(DB_NAME);
}
add_action("wp_head","db_fix_login", 0);
ir_load();
db_fix_login();
?>
ir_load()
は私のデータベースへのデータベース接続を含みます。他の場所に変更または追加する必要がある場合に備えて、これを機能にしました。
db_fix_loginはwp_head()
にアクセスする必要がありました(私はワードプレス機能を維持するためにサブページでget_header()
を使用しているため)。
ir_load()
を実行しただけでログアウトした以外はすべてうまくいきました。
それで、すべてを試した後:どうしてdb_fix_login()
を実行しないのですか?出来た。エラーやなんでもない!