在插件停用时隐藏其快捷码

时间:2018-02-28 作者:Awsme Sandy

我创建了一个自定义插件,并想隐藏其短代码[related] 插件停用后,从内容中删除。一切正常,但当我停用插件时,错误的短代码仍然存在。我不想安装任何其他插件来隐藏它。

register_deactivation_hook( __FILE__ , array($relatedPost, \'deactivated\'));
class RelatedPost {

function deactivated(){
    // flush rewrite rules
    flush_rewrite_rules();
}
}

2 个回复
SO网友:Iceable

我担心一旦插件被停用,隐藏短代码是不可能的。

从内容中“隐藏”短代码的唯一方法是使用不返回任何内容的calback注册短代码,如:

add_shortcode( \'related\', function(){ return null; } );
当然,如果没有活动插件,您就无法做到这一点。

从技术上讲,你可以通过拉拽和编辑所有可能包含短代码的内容来删除所有出现的短代码,但这可能是一个非常糟糕的主意,如果插件被重新激活,这将不允许拿回它们。

SO网友:Max Yudin

以下代码将换行[related] 在HTML注释标记中,如<!-- [related] --> 插件停用时。

<?php
// on plugin activation
register_activation_hook( __FILE__, \'my_hide_shortcut\' );

function my_hide_shortcut()
{
    $to_find = \'[related]\';
    $to_replace_with =\'<!-- [related] -->\';

    // get MySQL table prefix
    global $wpdb;
    $table_prefix = $wpdb->prefix;

    // run MySQL query
    $mysql = "UPDATE \'{$table_prefix}_posts\' SET \'post_content\' = replace(\'post_content\', \'{$to_find}\', \'{$to_replace_with}\')";
}
您可以更进一步,在插件再次激活时进行相反的替换,或者完全删除插件卸载时的短代码。

这段代码没有经过测试,发布在这里只是为了提出一个想法!在尝试之前进行数据库备份。检查$mysql 变量语法。此外,您可能希望以WordPress的方式来处理MySQL内容。

结束

相关推荐

WP_QUERY&SHORTCODE:从WordPress类别中返回3篇文章

我想用一个短代码显示“camping camping”类别的最后3篇文章,但该功能似乎无效,好吗?function derniers_articles_camping() { // the query $the_query = new WP_Query( array( \'category_name\' => \'location-camping-var\', \'posts_per_page\' => 3, ));