[Resuelto] add_write_rule wordpress ayuda porfavor

Iniciado por Blaztreal, 21 Mayo 2018, 02:10 AM

0 Miembros y 1 Visitante están viendo este tema.

Blaztreal

hola bueno llevo 3 dias haciendo esto y ya estoy harto de verdad no logro hacerlo funcionar necesito cambiar la direcion url de este custom post

Código (php) [Seleccionar]
$labels = array(
           'name'                  => _x( 'Capitulos', 'Post Type General Name', 'text_domain' ),
           'singular_name'         => _x( 'Capitulo', 'Post Type Singular Name', 'text_domain' ),
           'menu_name'             => __( 'Capitulos', 'text_domain' ),
           'name_admin_bar'        => __( 'Capitulos', 'text_domain' ),
           'archives'              => __( 'Archivo de Capitulo', 'text_domain' ),
           'attributes'            => __( 'Atributos de Capitulos', 'text_domain' ),
           'parent_item_colon'     => __( 'Padre', 'text_domain' ),
           'all_items'             => __( 'Capitulos', 'text_domain' ),
           'add_new_item'          => __( 'Añadir nuevo Capitulo', 'text_domain' ),
           'add_new'               => __( 'Añadir nuevo', 'text_domain' ),
           'new_item'              => __( 'Nuevo Capitulo', 'text_domain' ),
           'edit_item'             => __( 'Editar Capitulo', 'text_domain' ),
           'update_item'           => __( 'Actualizar Capitulo', 'text_domain' ),
           'view_item'             => __( 'Ver Capitulo', 'text_domain' ),
           'view_items'            => __( 'Ver Capitulos', 'text_domain' ),
           'search_items'          => __( 'Buscar Capitulos', 'text_domain' ),
           'not_found'             => __( 'No encontrado', 'text_domain' ),
           'not_found_in_trash'    => __( 'No encontado en papelera', 'text_domain' ),
           'featured_image'        => __( 'Imagen destacada', 'text_domain' ),
           'set_featured_image'    => __( 'Configurar imagen destacada', 'text_domain' ),
           'remove_featured_image' => __( 'Borrar imagen destacada', 'text_domain' ),
           'use_featured_image'    => __( 'Usar como imagen destacada', 'text_domain' ),
           'insert_into_item'      => __( 'Insertar en el Capitulo', 'text_domain' ),
           'uploaded_to_this_item' => __( 'Actualizar en este Capitulo', 'text_domain' ),
           'items_list'            => __( 'Listado de Capitulos', 'text_domain' ),
           'items_list_navigation' => __( 'Lista navegable de Capitulos', 'text_domain' ),
           'filter_items_list'     => __( 'Filtro de lista de Capitulos', 'text_domain' ),
       );
       $args = array(
           'label'                 => __( 'Capitulos', 'text_domain' ),
           'description'           => __( 'Entradas de Capitulos', 'text_domain' ),
           'labels'                => $labels,
           'supports'              => array( 'title', 'editor', 'thumbnail'),
           'hierarchical'          => false,
           'public'                => true,
           'show_ui'               => true,
           'show_in_menu'          => 'edit.php?post_type=anime',
           'menu_position'         => 5,
           'show_in_admin_bar'     => true,
           'show_in_nav_menus'     => true,
           'can_export'            => true,
           'has_archive'           => true,
           'exclude_from_search'   => false,
           'publicly_queryable'    => true,
           'capability_type'       => 'page',
           'rewrite' => array( 'slug' => 'capitulo'),

       );
       register_post_type( 'capitulo', $args );


en este post type genere un select en donde escoger el anime a la que el capitulo pertenece y lo guarda y todo bien pero necesito que la url muestre el nombre del anime de esta forma 'anime/capitulo/'Nombre del capitulo pero nose hacerlo alguien podria ayudarme por favor

intente usando asi

Código (php) [Seleccionar]
add_action( 'init', 'wpse33551_rewrites_init' );

function wpse33551_rewrites_init(){
   add_rewrite_rule(
       '(anime/capitulo/([^/]*)?$',
       'index.php?post_type=capitulo&p=$matches[2]&anime=$matches[1]',
       'top' );
}


y le hice varios cambios ya no se ni lo que hago jaajajaj espero su respuesta

Blaztreal

#1
bueno ya pude medio resolver aun ando arreglando unos detalles con esto funciono

Código (php) [Seleccionar]
function filter_post_type_link($link, $post)
   {
       $animeid=get_post_meta($post->ID,'_name_serie',true);
       $postanime=get_post($animeid);
       $animename=$postanime->post_name;
       $nombrepost=$post->post_title;
       $nombrepost= strtolower($nombrepost);
       $nombrepost= str_replace(' ', '-',$nombrepost);
       if ($post->post_type == 'capitulo'){
           $temporada=get_post_meta($post->ID,'_name_temporada',true);
           return home_url( 'anime/'.$animename.'/temp/'.$temporada.'/capitulo/'.$nombrepost );
       }
       if ($post->post_type == 'temporada'){
           
           return home_url( 'anime/'.$animename.'/temporada/'.$nombrepost );
       }

       
       return $link;
   }
   add_filter('post_type_link', 'filter_post_type_link', 10, 2);

   add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
   function mmp_rewrite_rules($rules) {
       $newRules  = array();
       $newRules['anime/(.+)/temp/(.+)/(.+)/?$'] = 'index.php?capitulo=$matches[3]';
       $newRules['anime/(.+)/(.*)/(.+)/?$'] = 'index.php?temporada=$matches[3]';

       /*Asi tengo que ponerla para mostrar todas las temporadas de todas los animes*/
       //$newRules['anime/(.+)/temporada/(.+)/?$'] = 'index.php?post_type=temporada';
       return array_merge($newRules, $rules);
   }


;-) ;-) ;-)