2016-03-30 9 views
0

私のWordPressのウェブサイトと同じディレクトリ(ルート)に保存されているimport.phpという名前のPHPスクリプトがあります。私の問題は、入力してスクリプトを実行したいときです:www.mydomain.com/import.phpもちろん、404エラーでwordpressを起動します。wordpressと同じディレクトリにPHPスクリプトを実行しますが、それはありません

どうすればこのスクリプトをwordpress環境の外で実行できますか?それをwordpressから除外できますか?

私のスクリプトは(実際のcronを介して)データベースの更新に専念しています。そのため、私はそのためにwordpressを使いたくないのです。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 


$mysql_host = 'localhost'; 
$mysql_username = ''; 
$mysql_password = ''; 
$mysql_database = ''; 

$db = new PDO('mysql:dbname='.$mysql_database.';host='.$mysql_host,$mysql_username,$mysql_password); 

// works not with the following set to 0. You can comment this line as 1 is default 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); 

function truncate_db() 
{ 
    global $db; 

    $sql_query_1 = " 
    TRUNCATE TABLE `WIZYTY`; 
    TRUNCATE TABLE `ANIMALS`; 
    TRUNCATE TABLE `DOCTORS`; 
    TRUNCATE TABLE `CUSTOMER` 
    "; 

    try { 
     $stmt = $db->prepare($sql_query_1); 
     $stmt->execute(); 
     echo "Truncate action - OK"; 
    } 
    catch (PDOException $e) 
    { 
     echo $e->getMessage(); 
     die(); 
    } 
} 

function import_db() 
{ 
    global $db; 

    try 
     { 
     $sql_query_2 = implode(array_map(function ($v) { 
      return file_get_contents($v); 
      }, glob(__DIR__ . "/*.sql"))); 

     $qr = $db->exec($sql_query_2); 
     echo "Import action - OK"; 
     } 
     catch (PDOException $e) 
     { 
     echo 'Connection failed: ' . $e->getMessage(); 
    } 
} 

truncate_db(); 
echo '<br />'; 
import_db(); 

$db = null; 
?> 
+2

ワードプレスが生成した書き換えルールのセットに例外を追加する必要があります。それらは '.htaccess'スタイルのファイルにwordpressによって保存されます。そのスクリプトの例外は、wordpressがその要求の処理を引き継ぐのを防ぎます。 – arkascha

+0

なぜですか?実際にあなたのルートフォルダ(wp-config.phpが置かれている場所)は、WordPressの前にWebサーバーがそれを処理するので動作するはずです。 http://yourdomain.com/license.txtと同じです – mitkosoft

答えて

1

あなたはとにかく .htaccessの

<FilesMatch "^import\.php$"> 
Allow from all 
</FilesMatch> 

上でこのような何かを追加する必要があり、あなたはより良いソリューション

Wordpressのイベントスケジューラ のためのワードプレスをチェックし、ルートフォルダにそれを持っていなければなりませんhttps://codex.wordpress.org/Function_Reference/wp_schedule_event

ここには素晴らしい例があります。 https://tommcfarlin.com/wordpress-cron-jobs/

関連する問題