1

我打算在我的 wordpress 网站上更新电子商务插件(Shopp),它要求我停用它。一旦我这样做了,我就失去了整个网站。我正在尝试通过 php 文件激活插件,但不确定我在做什么并需要一些帮助。有谁知道我如何通过 php 文件在我的网站上激活 Shopp 插件(或任何插件)?


这是我用来获取字符串的代码:

    $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;
4

5 回答 5

5

活动插件不存储在 PHP 文件中。它存储在数据库中。打开wp_options数据库中的表。查找option_name字段值为 的行active_plugins。在这一行中,查找 的值option_value。您将看到一个包含活动插件信息的序列化字符串。

现在,直接编辑字符串可能会有点混乱,特别是如果您不熟悉序列化字符串的格式。所以,我建议你复制字符串并unserialize()在上面使用 PHP 函数,然后返回一个数组。之后,使用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
于 2012-04-17T15:32:35.920 回答
2

此站点上有有关如何以编程方式激活和停用插件的详细信息。这是一个片段:

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);
    }
} 
于 2012-04-17T15:34:11.410 回答
1

对于每个有插件行为怪异的人

在停用、激活、安装、更新插件后被锁定时重新获得对您网站的访问权限的最简单方法是:

  • 转到您的虚拟主机管理面板(Cpanel、DirectAdmin)
  • 转到文件(文件管理器)
  • 转到 //wp-content/ 并将您的“plugins”文件夹重命名为其他名称,例如“plugins_off”

  • 转到您的 WP 管理员。您将可以再次访问,但看不到插件。

  • 返回您的虚拟主机管理面板并将“plugins_off”重命名为“plugins”。

现在您的插件都将在 WP-admin 中再次列出,但都已停用。从那里拿走它。

无需添加 PHP 代码。

于 2015-05-26T10:32:42.040 回答
1

Like RST 写道:无需编码即可恢复停用插件后崩溃的网站。网站崩溃是有充分理由的,因为其他插件依赖于该停用的插件(如 WooCommerce)。

恢复站点并访问 WP 管理员的最简单方法是重命名插件文件夹,刷新页面,返回并将文件夹重命名为“插件”,然后再次点击刷新。所有插件都将像以前一样恢复,只是它们都被停用了。现在您需要做的就是再次激活它们。一个一个地做,以确保没有其他崩溃。

于 2016-11-08T04:50:58.543 回答
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(); 
于 2016-07-14T12:35:23.380 回答