web-dev-qa-db-fra.com

Utilisation d'un caractère générique avec delete_transient ()

J'utilise l'API Transients pour conserver la sortie du shortcode d'un plugin de galerie que j'ai créé. En raison du nombre d'images utilisées et de la disposition différente requise, le nom du transitoire ressemble à ce qui suit:

_transient_galleries_single_shortcode_5183five

Donc - la portion int est l'ID de publication à laquelle elle fait référence et la five est le paramètre de colonne de ce shortcode spécifique. Ce qui me pose problème, c’est rincer ces codes abrégés des sauvegardes des galeries référencées.

Ce que je ferais normalement est quelque chose comme suit:

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');

Le problème ici est que le paramètre de colonne peut être différent en fonction des besoins d'une page donnée. Je me demandais s'il y avait un type de caractère générique que je pourrais utiliser ici pour rendre cela un peu plus dynamique (pour simplement les effacer toutes - quelque chose comme delete_transient('galleries_single_shortcode_'.$post_id%);). Toute aide serait grandement appréciée. Merci!

Mettre à jour

Fonction shortcode complète ajoutée pour plus de clarté dans la construction de tout:

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

J'ai oublié de pouvoir emprunter cette voie:

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