web-dev-qa-db-ja.com

プラグインの無効化時にショートコードを隠す

私はカスタムプラグインを作成しました、そしてプラグインが無効にされたらコンテンツからショートコード[related]を隠したいと思いました。すべてうまくいっていますが、私がプラグインを無効にしたときに浮遊するショートコードはまだそこにあります。私はそれを隠すために他のプラグインをインストールしたくありません。

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

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

プラグインが非アクティブ化されると、ショートコードを非表示にすることは不可能です。

コンテンツからショートコードを「隠す」唯一の方法は、次のように何も返さないカルバックでショートコードを登録することです。

add_shortcode( 'related', function(){ return null; } );

しかし、もちろん、あなたはアクティブなプラグインなしでそれを行うことはできません。

技術的にはcould含まれる可能性のあるすべてのコンテンツをプルして編集することにより、ショートコードのすべての出現を削除します-しかし、それはおそらく非常に悪い考えであり、これを元に戻すことはできませんプラグインが再アクティブ化される場合。

3
Iceable

以下のコードは、プラグインの無効化時に[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のものをしたいと思うかもしれません。

0
Max Yudin