Eliminar metaboxes personalizados del tipo de publicación personalizada

2

Hay una forma de crear un tipo de publicación personalizada en wordpress que solo incluya los metaboxes predeterminados y no cualquier otro metabox que se haya agregado por otros complementos.

La idea es usar la publicación personalizada para desarrollar un complemento, este complemento tendrá que tener todas las funciones personalizadas tipo de publicación pero con todos los metaboxes que el complemento agrega como todo-en-seo.

Quiero crear una interfaz limpia para el usuario y esos metaboxes adicionales están en el camino :-)

    
pregunta Bob Tolbert 15.10.2013 - 08:36

4 respuestas

3

Fuera de la parte superior de mi cabeza, sin realmente probarlo, esto debería funcionar. Desea probar is_admin para que no ejecutemos el código en el extremo delantero, y también probemos si el tipo de publicación es igual a su slug. Edité esto porque cometí un error tonto antes.

Consulte esta página del Códice: enlace

if( is_admin() ) {
    remove_meta_box('linktargetdiv', '$posttype', 'normal');
    remove_meta_box('linkxfndiv', '$posttype', 'normal');
    remove_meta_box('linkadvanceddiv', '$posttype', 'normal');
    remove_meta_box('postexcerpt', '$posttype', 'normal');
    remove_meta_box('trackbacksdiv', '$posttype', 'normal');
    remove_meta_box('postcustom', '$posttype', 'normal');
    remove_meta_box('commentstatusdiv', '$posttype', 'normal');
    remove_meta_box('commentsdiv', '$posttype', 'normal');
    remove_meta_box('revisionsdiv', '$posttype', 'normal');
    remove_meta_box('authordiv', '$posttype', 'normal');
    remove_meta_box('sqpt-meta-tags', '$posttype', 'normal');
}
    
respondido por el Imperative Ideas 15.10.2013 - 08:42
1

Puedes encontrar la mejor respuesta aquí: enlace

Ciertas meta box se pueden eliminar agregando algo como el código a continuación al archivo functions.php en su tema de WordPress:

// hide certain meta boxes on the 'YOUR_CUSTOM_POST_TYPE' custom post type
add_filter('add_meta_boxes', 'hide_meta_boxes_YOUR_CUSTOM_POST_TYPE');
function hide_meta_boxes_YOUR_CUSTOM_POST_TYPE() {
    remove_meta_box('postexcerpt', 'YOUR_CUSTOM_POST_TYPE', 'normal');
    remove_meta_box('trackbacksdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
    remove_meta_box('postcustom', 'YOUR_CUSTOM_POST_TYPE', 'normal');
    remove_meta_box('slugdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
    remove_meta_box('commentstatusdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
    remove_meta_box('commentsdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
    remove_meta_box('revisionsdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
}
    
respondido por el sanchu 15.10.2013 - 11:38
0

Primero que todo, no deberías hacerlo. Si un usuario ha instalado otros complementos, es porque desea usarlos, incluso si su complemento proporciona todas las funcionalidades de los complementos, ¿quién dice que para los usuarios su complemento es mejor que otros?

¿Y si los usuarios ya tienen toneladas de configuraciones con otros complementos y los ven desaparecer, está instalando su complemento? Apuesto a que los usuarios desincorporan inmediatamente su complemento (y si existe la posibilidad de que lleguen votos muy bajos en ese caso).

También considera que otro complemento puede usar la misma técnica para eliminar tus metaboxes. Y el otro complemento eliminará los metaboxes de ese complemento, y así sucesivamente ...

¿Qué será, war of metaboxes ?

Mi sugerencia es agregar sus metaboxes y dejar que los usuarios decidan qué metaboxes se van y qué eliminar (quitar el complemento o desmarcar el metabox de la pestaña "ayuda de pantalla").

Finalmente, tenga en cuenta que no puede eliminar los metaboxes de un complemento si no conoce la ID de esos metaboxes. Entonces, para hacer lo que quieras, debes instalar todos los complementos " competidores ", ver la identificación de sus metaboxes y eliminarlos usando remove_meta_box .

¿Y si un complemento se actualiza y cambia la identificación de sus metaboxes?

Créeme, es un trabajo duro, sucio y sin beneficios.

    
respondido por el gmazzap 15.10.2013 - 09:08
0

Junto con las otras respuestas, encontré que si creas tu tipo de publicación personalizada con

$args = array(
    ...
    public => false
    ...
) 

Algunos metaboxes no se incluirán, como Wordpress Seo by Yoast, por ejemplo. En mi caso, estoy usando el cpt para una ventana emergente, por lo que no se necesitan otros metaboxes y el cpt no es público.

    
respondido por el chifliiiii 27.06.2014 - 15:43

Lea otras preguntas en las etiquetas