2012-04-17 75 views
1

我打算在我的WordPress站點上更新電子商務插件(Shopp),並要求我停用它。一旦我做到了,我就失去了整個網站。 我想通過php文件激活插件,但不知道我在做什麼,並希望得到一些幫助。 有誰知道我可以通過php文件激活我的網站上的Shopp插件(或任何插件)?需要通過php文件激活一個WordPress插件的插件


這是我用來獲取字符串代碼:

$unserialized = unserialize('a:14:{i:0;s:19:"akismet/akismet.php";i:1;s:37:"breadcrumbs-plus/breadcrumbs-plus.php";i:2;s:35:"googleanalytics/googleanalytics.php";i:3;s:45:"grunion-contact-form/grunion-contact-form.php";i:4;s:43:"image-caption-links/image-caption-links.php";i:5;s:29:"image-widget/image-widget.php";i:6;s:13:"rate/rate.php";i:7;s:33:"restore-jquery/restore-jquery.php";i:8;s:41:"shopp-cache-helper/shopp-cache-helper.php";i:9;s:47:"shopp-default-breadcrumb-extender-sdbe/sdbe.php";i:10;s:33:"shopp-improved/shopp-improved.php";i:11;s:19:"shuffle/shuffle.php";i:12;s:19:"vslider/vslider.php";i:13;s:41:"wordpress-importer/wordpress-importer.php";}'); 
array_push($unserialized, 'shopp/shopp.php'); 
$serialized = serialize($unserialize); 
echo $serialized; 

回答

5

的活動插件不存儲在一個PHP文件。它存儲在數據庫中。打開數據庫中的wp_options表。查找其中option_name字段的值爲active_plugins的行。在這一行中,查找option_value的值。您將看到包含活動插件信息的序列化字符串。

現在,馬上編輯字符串可能會有點混亂,特別是如果您不熟悉序列化字符串是如何格式化的。所以,我建議你複製字符串並使用PHP unserialize()函數,然後它將返回一個數組。之後,使用array_push()添加另一個元素,其中的值是插件文件的路徑(例如「akismet/akismet.php」,在您的情況下可能是「shopp/shopp.php」)。添加另一個元素後,請使用serialize()並複製返回的字符串,並替換數據庫中的舊序列化字符串。

$unserialized = unserialize('...'); 
array_push($unserialized, 'shopp/shopp.php'); 
$serialized = serialize($unserialized); 
echo $serialized; // Copy this output back into the database 
+0

好,所以我有seralized字符串,之後,你失去了我。你能給我一個例子,說明如何使用array_push()將PHP反序列化函數放在option_value上?如果你想要的話,我有這個字符串。 – Sophie 2012-04-17 17:05:01

+1

@Sophie看到我的編輯。 – 2012-04-17 17:17:11

+0

我是否直接在phpMyAdmin中使用字符串的option_value框? @KemalFadillah – Sophie 2012-04-17 17:18:05

1

對於如何以編程方式激活和停用插件上this site細節。這裏是一個片段:

function toggle_plugin() { 

    // Full path to WordPress from the root 
    $wordpress_path = '/full/path/to/wordpress/'; 

    // Absolute path to plugins dir 
    $plugin_path = $wordpress_path.'wp-content/plugins/'; 

    // Absolute path to your specific plugin 
    $my_plugin = $plugin_path.'my_plugin/my_plugin.php'; 

    // Check to see if plugin is already active 
    if(is_plugin_active($my_plugin)) { 

     // Deactivate plugin 
     // Note that deactivate_plugins() will also take an 
     // array of plugin paths as a parameter instead of 
     // just a single string. 
     deactivate_plugins($my_plugin); 
    } 
    else { 

     // Activate plugin 
     activate_plugin($my_plugin); 
    } 
} 
+0

這是否必須在我添加到我的網站的一個新的PHP文件? – Sophie 2012-04-17 16:11:49

+0

我更新了我的問題,因爲這是不工作的,我不斷收到:致命錯誤:調用未定義函數add_filter()在/home/p00chw3b/public_html/wp-admin/includes/plugin.php在線1652 @Robbie – Sophie 2012-04-17 16:36:41

+0

@Sophie看起來像我稍微遲到了這次談話。聽起來像你得到它排序雖然。順便說一句,你需要1.改變你的插件的路徑,並2.將此代碼添加到任何文件(例如functions.php),然後添加一個調用函數,以便它被執行。它應該已經切換插件的激活狀態。 – Robbie 2012-04-17 18:27:08

1

大家誰都有作用的一個插件怪異

停用,激活,安裝之後被鎖定時,更新插件以重新訪問您的網站的最簡單方法:

  • 轉到您的虛擬主機提供商adminpanel(交友,管理嚮導)
  • 轉到文件(文件管理器)
  • 轉到// wp-content /並將您的「插件」文件夾重命名爲「plugins_off」

  • 轉到您的WP-admin。您將可以再次訪問,但無法看到插件。

  • 返回到您的webhost adminpanel並將「plugins_off」重新命名爲「plugins」。

現在你的插件將全部在WP-admin中列出,但全部停用。 從那裏拿它。

沒有必要添加PHP代碼。

0

這裏是工作的代碼 (只是取消註釋「激活」行):

function MY_toggle_plugins() { 
    include_once(ABSPATH . 'wp-admin/includes/plugin.php'); 
    $temp_files1 = glob(WP_PLUGIN_DIR.'/*'); 
    $activated=array(); 
    $already_active=array(); 
    foreach($temp_files1 as $file1){ 
     if(is_dir($file1)) { 
      $temp_files2 = glob($file1 . '/*'); 
      foreach($temp_files2 as $file2){ 
       if(is_file($file2) && stripos(file_get_contents($file2),'Plugin Name:')!==false) { 
        $plugin_name_full=basename(dirname($file2)).'/'.basename($file2); 
        if(is_plugin_active($plugin_name_full)) { 
         array_push($already_active, $plugin_name_full); 
         //deactivate_plugins($plugin_name_full); 
        } 
        else{ 
         array_push($activated, $plugin_name_full); 
         //activate_plugin($plugin_name_full); 
        } 
       } 

      } 
     } 
    } 
    echo 'You have activated these plugins:<br/><br/>'.serialize($activated).'<br/><br/>These were already active:<br/><br/>'.serialize($already_active); exit; 
} 
//execute 
MY_toggle_plugins(); 
1

像RST寫道:無需編碼,以恢復網站停用一個插件後墜毀。網站崩潰的原因很充分,因爲其他插件依賴於停用的插件(如WooCommerce)。

恢復網站並訪問WP管理員的最簡單方法是重命名插件文件夾,刷新頁面,返回並將文件夾重命名回「插件」,然後再次點擊刷新。所有插件將像以前一樣回來,只有它們全部停用。現在,您只需要再次激活它們即可。一個一個地做,確保沒有其他崩潰。