¿Desea eliminar la configuración si se elimina el tema?

4

¿Es posible realizar una acción solo si el tema se elimina (no se desactiva) del directorio de temas?

Por ejemplo, quiero eliminar la configuración del tema de la base de datos después de eliminar el tema. Así que quiero ejecutar esto cuando se elimine el tema:

delete_option( 'mysettings' );
    
pregunta jay 26.11.2013 - 08:53

5 respuestas

2

Como las otras respuestas parecen implicar, no hay una forma integrada de hacer esto. No hay una API de desinstalación de tema similar a que para los complementos . En realidad, hay un un boleto de larga data para agregar esta característica al núcleo de WordPress, de modo que los temas se puedan desinstalar. El consenso de los desarrolladores principales parece ser que esta no es una característica que quiere que los temas tengan. No estoy seguro de cuál es la razón de esto. Tal vez puedas ayudar a explicarles los beneficios de esto.

    
respondido por el J.D. 28.01.2014 - 21:41
0

El único enlace de acción / filtro que he encontrado en esta parte del código está en

do_action( 'delete_site_transient_' . $transient, $transient );

Se llama dentro de delete_site_transient('update_themes'); , que se llama en function delete_theme($stylesheet, $redirect = '') después de que el tema se haya eliminado correctamente.

Así que haría esto agregando mi acción a delete_site_transient_update_themes . En esta acción puede verificar algunas condiciones (nombre del tema) y luego eliminar algunas opciones.

Por supuesto, este código se llama cuando el tema está inactivo y después de que su directorio se elimina del servidor. Así que no puedes agregar esta acción dentro de ese tema (sería bueno) y debes colocarlo en algún complemento. (No estoy convencido de que la instalación de un complemento adicional para asegurarse de que las opciones de tema se eliminen después de que se elimine ese tema sea una gran idea)     

respondido por el Krzysiek Dróżdż 26.11.2013 - 22:18
0

No estoy seguro de si entiendo la pregunta, por lo que voy a reformularla primero, pero si lo hago, he hecho una solución para esto.

Entendiendo la pregunta como:

Si el tema está desactivado, las opciones del sitio se conservan, por lo que si se activan nuevamente, no es necesario volver a ingresarlas, pero cuando se eliminan, se eliminan por completo.

Esta no es una respuesta completa porque habla del complemento desactivado frente a los enlaces de desinstalación en lugar del tema, pero asumiendo que el tema tiene algo similar, lo que hice fue lo siguiente:

  1. Al desactivar, puse la configuración de opciones en una pequeña tabla de copia de seguridad.
  2. Al activar, verifique si existe la tabla de copia de seguridad y, de ser así, restaure la configuración de la opción desde la copia de seguridad y suelte la tabla (o simplemente busque la fila y elimine la fila). Asegúrese de nombrar la tabla para que esté claramente relacionada con el tema como las notas anteriores en woocommerce. Y siempre elimine la configuración después de usarla para asegurarse de que la configuración más reciente está disponible.
  3. Al eliminar, se comporta normalmente (lo que elimina de forma permanente la configuración de las opciones).

De esta manera, el usuario no tiene que rehacer la configuración de las opciones si tiene que desactivar para verificar los conflictos de complementos y temas (como lo hice recientemente con un tema Woo).

    
respondido por el Margaret Fisk 02.12.2013 - 07:48
0

realmente depende totalmente del autor del tema, creo ... algunos hacen mejor recolección de basura que otros. Acabo de terminar por completo en mi tabla wp_options tratando de localizar una causa ... y al hacerlo, encontré una TONELADA de opciones de temas para temas que ya habían sido eliminados y desaparecidos del servidor. Afortunadamente, los que tenían más opciones de las que quería deshacerme y limpiar mi mesa, el autor había puesto un bonito prefijo en todos los archivos "su" para que pudieran identificarse fácilmente. Entra en tu mesa y ve si este es un caso para ti. Si es así, puede escribir una consulta apropiada.

Además, se supone que los transitorios y los transitorios de sitio se eliminan después de un cierto tiempo ... este no es siempre el caso. He borrado las páginas y las páginas de los manuales también.

No sé si eso responde a la pregunta. Parece que quieres generar una función php ... Haría una consulta mySql y lo haría de esa manera. (¡con las copias de seguridad de db primero, por supuesto!)

    
respondido por el Oxnard Developer 18.12.2013 - 05:25
0

Es muy complejo saber qué opción generó tu configuración de tema.

Pero si sigue la convención de nombres, por ejemplo, Woocommerce (todas las opciones creadas por Woocomerce tienen un nombre como woocommerce_* y woocommerce como el nombre del directorio del complemento). Facilita la búsqueda y eliminación de opciones de temas.

Entonces, para las opciones de tema, puedes buscar esto:

Si el tema actual se llama Deepfocus, el nombre de la opción debería ser como deepfocus_ *

Si el tema actual es Twenty Twelve, el nombre de la opción debería ser como Twentwelve_ *

Nota : Creé un complemento simple ( WP-Delete-Theme-Option ) que sigue estas convenciones para eliminar temas específicos opción.

  

El complemento genera el nombre de la opción a partir del nombre del directorio del tema.

    
respondido por el Ravinder Kumar 26.11.2013 - 14:09

Lea otras preguntas en las etiquetas