私はカスタムプラグインを作成しました、そしてプラグインが無効にされたらコンテンツからショートコード[related]
を隠したいと思いました。すべてうまくいっていますが、私がプラグインを無効にしたときに浮遊するショートコードはまだそこにあります。私はそれを隠すために他のプラグインをインストールしたくありません。
register_deactivation_hook( __FILE__ , array($relatedPost, 'deactivated'));
class RelatedPost {
function deactivated(){
// flush rewrite rules
flush_rewrite_rules();
}
}
プラグインが非アクティブ化されると、ショートコードを非表示にすることは不可能です。
コンテンツからショートコードを「隠す」唯一の方法は、次のように何も返さないカルバックでショートコードを登録することです。
add_shortcode( 'related', function(){ return null; } );
しかし、もちろん、あなたはアクティブなプラグインなしでそれを行うことはできません。
技術的にはcould含まれる可能性のあるすべてのコンテンツをプルして編集することにより、ショートコードのすべての出現を削除します-しかし、それはおそらく非常に悪い考えであり、これを元に戻すことはできませんプラグインが再アクティブ化される場合。
以下のコードは、プラグインの無効化時に[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のものをしたいと思うかもしれません。