• Resuelto lluisclava

    (@lluisclava)


    Buenos días,

    Soy nuevo en el desarrollo de plugins de WordPress. Necesito crear un plugin que cree una tabla pròpia y mostrar en una pàgina con un filtro y con los datos de esta tabla. Esta parte la tengo ya hecha con un shortcode y todo bien.

    El problema viene que ahora quiero que cuando haga clic sobre un elemento de la tabla mostrarlo, pero mostrarlo con una url significativa como por ejemplo wordpress.com/elemento/id/. Y claro me gustaria respetar des de el plugin, la configuracion de enlaces permanentes del sitio wordpress.

    Como podria resolver esto?
    Creando una taxonomia o con un custom post type?
    Como hago luego para capturar las urls del tipo /elemento/id/??

    Muchas gràcias.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • ¿Puedes describir un poco que tipo de datos y el propósito? ¿Seguro que necesitas una tabla propia?

    Así a priori, asumiendo que de verdad necesitas la tabla propia, se me ocurre que podrías hacer un rewrite de tu URL personalizada hacia la página donde tienes el shortcode (no probado, solo escrito aquí como ejemplo):

    add_filter( 'query_vars', 'add_elemento_var', 0, 1 );
    function add_elemento_var($vars){
        $vars[] = 'elemento';
        return $vars;
    }
    
    add_action( 'init', 'rewrite_elemento_url' );
    funciton rewrite_elemento_url() {
        add_rewrite_rule( '^elemento/([^/]+)/?$', 'index.php?post_type=page&name=my_page&elemento=$matches[1]','top' );
    }

    Con ese rewrite, todas las urls de tipo elemento/algo te llevaría a la misma página y en ella podrías acceder al query var «elemento» y hacer lo que necesites con el valor en el shortocode o donde sea:

    $id = get_query_var( 'elemento' );

    Iniciador del debate lluisclava

    (@lluisclava)

    Buenas,

    Primero gracias por la respuesta cybmeta.

    Tengo que hacer un plugin para un solo sitio web. La finalidad és filtrar i mostrar comida para animales (a priori muy senzillo). Pero el tema es que voy a tener unas 80 columnas de datos de cada comida para animales y voy a tener que importar los datos desde un csv. Por este motivo, decidí que era mejor usar una tabla pròpia sin mezclar los posts con esto.

    Voy a provar tu solución entonces.

    Iniciador del debate lluisclava

    (@lluisclava)

    Buenas,

    Al final he utilizado la solución que les pongo a continuación. Despues de revisar varias opcions, para redirigir la URL a un plugin creo que es la mejor solución.

    Solución

    Gracias a todos.

    Es prácticamente la misma idea que te propuse. De hecho, lo que hace add_rewrite_endpoint() es registrar un rewrite y sus query vars. No veo mucha diferencia práctica; salvo que no estoy de acuerdo en utilizar template_redirect para mostrar contenido como hacen en ese enlace, yo utilizará el filtro template_include para establecer el template deseado donde, ahora sí, se mostraría el contenido.

    De todas formas, me alegro que hayas encontrado la solución.

    PD: No se «redirige la URL a un plugin», lo que hace el código no es una redirección, es una reescritura.

    • Esta respuesta fue modificada hace 5 años, 11 meses por cybmeta.
    • Esta respuesta fue modificada hace 5 años, 11 meses por cybmeta.
Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘Nueva taxonomia o nuevo post type?’ está cerrado a nuevas respuestas.