web-dev-qa-db-ja.com

Delete_transient()でワイルドカードを使用する

私が作成したギャラリープラグインのショートコードの出力を保持するために トランジェントAPI を使用しています。使用される画像の数と必要なレイアウトが異なるため、一時的な名前は次のようになります。

_transient_galleries_single_shortcode_5183five

だから - int部分はそれが参照しているポストIDであり、fiveはこの特定のショートコードのカラム設定です。私が問題に遭遇しているのは、参照されているギャラリーのセーブ時にこれらのショートコードをフラッシュすることです。

私が通常することは以下のようなことです。

function galleries_delete_transient($post_id) {
    switch (get_post_type()) {
        case 'galleries':
            delete_transient('galleries_single_shortcode_'.$post_id);
        break;
    }
}
add_action('save_post','galleries_delete_transient');

ここにある問題は、カラム設定が特定のページのニーズに基づいて異なる可能性があるということです。 delete_transient('galleries_single_shortcode_'.$post_id%);)のように。任意の助けは大歓迎です。ありがとうございます。

更新

明確にするために追加された完全なショートコード機能。

function galleries_single_shortcode($atts, $content = null) {
    extract(shortcode_atts(array(
            "id"     => '',
            "columns" => 'four'
    ), $atts));

    global $galleries_options;

    $galleries_single_shortcode_output = get_transient('galleries_single_shortcode_'.$id.$columns);
    if ($galleries_single_shortcode_output === false) {

        ob_start();

        // OUTPUT HERE

        $galleries_single_shortcode_output = ob_get_contents();

        ob_end_clean();

        set_transient('galleries_single_shortcode_'.$id.$columns, $galleries_single_shortcode_output, 60 * 60 * 24);

    }


    return $galleries_single_shortcode_output;
}
add_shortcode('galleries_single', 'galleries_single_shortcode');
4
Zach

私はこの道を行くことができるのを忘れた:

$wpdb->query( "DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_galleries_%')" );
6
Zach