Anular el registro del tipo de publicación personalizada de WordPress

3 minutos de lectura

Estoy tratando de eliminar un tipo de publicación personalizada que se configuró a través de un tema diferente en WordPress, ahora todas esas publicaciones están asignadas a un post_type de portfolio. Después de mucho buscar, encontré el siguiente código, sin embargo, parece que no funciona. Intenté agregarlo tanto al tema nuevo como a los temas antiguos. functions.php.

Quiero eliminar post_type y clasificar las publicaciones y mostrarlas como una publicación normal. Creo que lo que estoy haciendo es correcto, pero parece que no puedo hacerlo funcionar: publiqué tanto el código para el tipo de publicación personalizada como el código para anular el registro de las publicaciones asignadas.

Código para registrar el tipo de publicación

if ( ! function_exists( 'unregister_post_type' ) ) :
function unregister_post_type() {
global $wp_post_types;
if ( isset( $wp_post_types[ 'portfolio' ] ) ) {
    unset( $wp_post_types[ 'portfolio' ] );
    return true;
}
return false;
}
endif;

add_action('init', 'unregister_post_type');

Código que registró el tipo de publicación

register_post_type( 'portfolio',
    array(
        'labels' => array(
             'name' => __('Portfolio Items'),
             'singular_name' => __('Portfolio Item'),
             'add_new_item' => __('Add New Portfolio Item'),
             'edit_item' => __('Edit Portfolio Item'),
             'new_item' => __('New Portfolio Item'),
             'view_item' => __('View Portfolio Item'),
             'search_items' => __('Search Portfolio Items'),
             'not_found' => __('No portfolio items found'),
             'not_found_in_trash' => __('No portfolio items found in Trash')
        ),
        'public' => true,
        'show_ui' => true,
        'hierarchical' => false,
        'menu_position' => 7,
        //'rewrite' => array('slug' => 'portfolio'),
        'rewrite' => true,
        '_built_in' => false,
        'taxonomies' => array( 'post_tag','category','portfolio_tag', 'portfolio_category', 'client'),
        'supports' => array( 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions')
    )
);

Pude eliminarlo en WordPress 4.6.1 usando este código:

function delete_post_type(){
  unregister_post_type( 'portfolio' );
}
add_action('init','delete_post_type', 100);

¡Tu código se ve bien! Pero si cancela el registro de post_type… las publicaciones desaparecen… Así que no lo cancele demasiado pronto. Antes de cancelar el registro del tipo de publicación, migre las publicaciones de post_type a publicaciones normales. Este complemento es útil para eso: https://wordpress.org/plugins/post-type-switcher/

Pero si no quieres migrar las publicaciones de video a las publicaciones predeterminadas… Tendrás que modificar tu loop para incluir esas publicaciones tipo portafolio:

function add_custom_post_type_to_query( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'post_type', array('post', 'portfolio') );
    }
}
add_action( 'pre_get_posts', 'add_custom_post_type_to_query' );

Y no olvide visitar la página de enlaces permanentes cuando trabaje con tipos de publicaciones personalizadas para que WordPress reconozca los cambios que ha realizado.

avatar de usuario
Methanjay

Pruebe este código (con un gran número de prioridad)

function custom_unregister_theme_post_types() {
    global $wp_post_types;

      if ( isset( $wp_post_types["portfolio"] ) ) {
         unset( $wp_post_types[ "portfolio" ] ); //UPDATED
      }

}
add_action( 'init', 'custom_unregister_theme_post_types', 20 );

Nota: asegúrese de que el nombre del tipo de publicación registrada sea portfolio o portfolios (con s), register_post_type( $post_type$ argumentos )

ACTUALIZADO: unset( $wp_post_types[ "portfolio" ] ); //UPDATED

  • Todavía no funciona desafortunadamente. Lo agregué a functions.php tanto del tema nuevo como del tema anterior que registró el tipo de publicación.

    – Nikki Mather

    20 de abril de 2016 a las 17:17

  • Si viene de un tema diferente, ¿puedes cambiarlo? init a after_setup_theme? y si de cualquier uso de complemento plugins_loaded gancho.

    – Methanjay

    20 de abril de 2016 a las 17:19

  • También, refiérase este correo.

    – Methanjay

    20 de abril de 2016 a las 17:34

Aquí está el código para cancelar el registro de tipos de publicaciones personalizadas en wordpress. Solo recuerde que necesita borrar su functions.php de la función que registró su tipo de publicación en primer lugar.

if( !function_exists( 'prefix_unregister_post_type' ) ) {
  function prefix_unregister_post_type() {
    unregister_post_type( 'portfolio' );
  }
}
add_action('init','prefix_unregister_post_type');

¿Ha sido útil esta solución?