¿Es posible determinar cuándo el usuario está en "Medios > Añadir nuevo" vs "Entrada > Añadir imagen"?

25 ene 2011, 22:01:19
Vistas: 265
Votos: 0

Quiero envolver el filtro a continuación en un condicional que verifique si el usuario está subiendo una imagen desde el Administrador de Medios (Admin > Medios > Añadir nuevo) y no desde la rutina de subida de imágenes del editor de entradas.

¿Es posible distinguirlo? $pagenow en ambos casos parece ser el mismo...

//no crear miniaturas adicionales
global $pagenow;
if($pagenow=="media-new.php"){
add_filter('intermediate_image_sizes_advanced','ce4_no_thumbs');
}
function ce4_no_thumbs($sizes){return array();}

Actualización: Parece que hay un post_id en la cadena de consulta cuando se accede a la subida desde una entrada y no cuando se accede mediante "administrador de medios > añadir nuevo", sin embargo, la siguiente prueba pasa en ambos casos...

if ( is_admin() && !isset($_GET['post_id']) ) {
    /*Esto no debería ejecutarse si el usuario está subiendo una imagen a una entrada, 
      ya que post_id está en la cadena de consulta. Sin embargo, en mi prueba
      aún se ejecuta.*/

add_filter('intermediate_image_sizes_advanced','ce4_no_thumbs');
}
0
Todas las respuestas a la pregunta 2
5

Respondí esto para ti en los comentarios de tu pregunta anterior.

...puedes usar el filtro que @Backie sugirió arriba (intermediate_image_sizes_advanced), y en la función enganchada verificar un campo en la colección de posts llamado _wp_http_referer. Te dice de dónde vino la solicitud de carga.

Si _wp_http_referer contiene "media-new.php", puedes devolver un array vacío (lo que detendrá temporalmente la generación de miniaturas, pero no cambiará ninguna configuración de miniaturas). De lo contrario, devuelve el array $sizes sin modificar.

Prueba:

function wpsx_7756_no_thumbnails($arr_sizes){

    if(stristr($_POST['_wp_http_referer'], 'media-new.php')) {
        return array();
    }

    return $arr_sizes;

}

add_filter('intermediate_image_sizes_advanced','wpsx_7756_no_thumbnails');

Déjame saber si esto funciona.

Ten en cuenta que agregar el filtro mientras estás en el formulario de carga no hará lo que quieres--el formulario se envía a una página separada que maneja la carga, y no respetará tu filtro.

26 ene 2011 02:10:09
Comentarios

@MathSmath: Lo he añadido a functions.php y lo he probado. Desafortunadamente, todas las miniaturas siguen creándose cuando se usa "Medios > Añadir nuevo". ¿Alguna idea para hacer pruebas de seguimiento? echo "el post referrer: ".$_POST['_wp_http_referer']; (devuelve un entero incrementado en +1 cada vez que ocurre una subida)

Scott B Scott B
26 ene 2011 02:25:10

Quizás otra opción sería comprobar el iframe? Aparece en el post uploader, pero aparentemente no en el gestor de medios > uploader de añadir nuevo.

Scott B Scott B
26 ene 2011 02:33:16

@Scott B ¡Maldita sea! Estaba seguro de que eso funcionaría :) No estoy seguro sobre lo del iframe. Para hacer seguimiento, probaría añadiendo un wp_die(json_encode($_POST)) al principio de tu función "no thumbnails". Volcará el contenido de la colección post en el momento en que se ejecuta el filtro. Es posible que para cuando Wordpress llegue a crear las miniaturas, la colección post original esté fuera de alcance? En cualquier caso, podrías ver algo en la colección post disponible que PUEDAS usar para identificar el referrer.

MathSmath MathSmath
26 ene 2011 03:07:35

@MAthSmath: ¡Entendido! if(!stristr($_POST['type'], 'image')) {return array();}return $arr_sizes;}

Scott B Scott B
26 ene 2011 04:46:37

@ScottB ¡INCREÍBLE! Me alegro de que lo hayas conseguido funcionar.

MathSmath MathSmath
26 ene 2011 05:35:31
0

¿Puedes probar $_GET['post'] en lugar de usar $_GET['post_id']?

Ese es el parámetro de solicitud que veo.

26 ene 2011 01:58:06