Usando un comodín con delete_transient ()

2

Estoy utilizando la API de transitorios para mantener la salida del código corto de un complemento de la galería que creé. Debido al número de imágenes utilizadas y los diferentes diseños necesarios, el nombre transitorio es similar al siguiente:

_transient_galleries_single_shortcode_5183five

Entonces, la parte int es la ID de publicación a la que hace referencia y five es la configuración de la columna de este shortcode específico. Donde estoy teniendo problemas es el lavado de estos códigos cortos al guardar de las galerías a las que se hace referencia.

Lo que normalmente haría es algo como lo siguiente:

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

El problema aquí es que la configuración de la columna puede ser diferente según las necesidades de una página determinada, por lo que me preguntaba si hay algún tipo de comodín que pueda usar aquí para hacer que este sea un poco más dinámico (para eliminar todo ellos - algo como delete_transient('galleries_single_shortcode_'.$post_id%); ). Cualquier ayuda sería muy apreciada. Gracias!

Actualizar

Se agregó la función de shortcode completa para mayor claridad cómo se construye todo:

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');
    
pregunta Zach 19.11.2012 - 14:54

1 respuesta

5

Olvidé que podría seguir esta ruta:

$wpdb->query( "DELETE FROM '$wpdb->options' WHERE 'option_name' LIKE ('_transient_galleries_%')" );
    
respondido por el Zach 11.12.2012 - 17:39

Lea otras preguntas en las etiquetas