Soporte » WordPress Avanzado » Cambiar url de las categorías en un widget

  • Resuelto isabelgalvez

    (@isabelgalvez)


    Hola,
    alguien sabe cómo acceder a la ruta a la que llevan las categorías de un widget una vez pinchas sobre ellas?

    Necesito pasar un parámetro y me estoy volviendo loca buscando entre los archivos .php…

    Gracias!!

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Moderador LGrusin

    (@lgrusin)

    La ruta de las categorías es la que hayas definido en Ajustes – Permalink, da igual si se accede por un widget o de otra forma.

    Aclara un poco lo que quieres hacer.

    Un saludo

    isabelgalvez

    (@isabelgalvez)

    Hola!
    Lo que quiero es que al hacer click en una categoría, la url se vaya a su categoría y en vez de: http://www.misitio.com/category/actualidad/ ponga:
    http://www.misitio.com/category/actualidad/?2. El permalink me da igual.

    He encontrado en el archivo category-template un código que quizás me pueda servir:

    function get_category_link( $category ) {
    	if ( ! is_object( $category ) )
    		$category = (int) $category;
    
    	$category = get_term_link( $category, 'category' );
    
    	if ( is_wp_error( $category ) )
    		return '';
    
    	return $category;
    }

    Pero no sé donde agregar exactamente el parámetro ?2.
    O quizás mi solución esté en el archivo functions.php?

    Gracias!

    Moderador LGrusin

    (@lgrusin)

    Podrías crear un menú sólo con los enlaces a las categorías con ?2 ya en la URL. Después lo añades como widget. Lo otro que pretendes es cambiar la URL sin necesidad.

    Un saludo

    isabelgalvez

    (@isabelgalvez)

    Hola,
    no entiendo muy bien lo que dices.

    Lo he solucionado de esta manera, para que otra gente que tenga el mismo problema lo sepa:
    He creado un shortcode en functions.php.
    después con:
    add_filter('widget_text', 'do_shortcode');
    he logrado que se pueda meter en el widget.

    En la propia función le he puesto un condicional :

    function mostrar_categorias(){
        global $wpdb;
        
        $query="aquí va mi sentencia sql";
        $resultado = $wpdb->get_results($query);
        $host= $_SERVER["HTTP_HOST"];
        echo '<div>';
    echo "<h4>Categorías</h4>";
    echo "<ul>";
    foreach ( $resultado as $row ) 
    {       if(isset($_GET['2'])){
    	echo "<li><a href='http://$host/category/$row->slug?2'>".$row->name."</a></li>";
    }else{
        echo "<li><a href='http://$host/category/$row->slug'>".$row->name."</a></li>";
    }
    }  
        echo "</ul>";
        echo "</div>";
    }
    
    add_shortcode( 'categorias', 'mostrar_categorias' );
    add_filter('widget_text', 'do_shortcode');

    Aún así, me quedo con la duda de saber en qué archivo concreto estaba la solución para cambiar la url de las categorías que te vienen en el widget de categorías que wordpress o mi plantilla ofrecía por defecto.

    He estado trasteando en category-template.php y encontré una función llamada wp-list-categories. Si borrabas la función te dejaban de aparecer las categorías pintadas en el widget. Así que debe ser ahí, creo. pero como he estado tocando por todas partes y no me salía, pues monté un shortcode a mano.

    isabelgalvez

    (@isabelgalvez)

    No sé si me expliqué bien,
    mi objetivo final era mandar el parámetro porque quería hacer un condicional.
    Pero lo del condicional no tenía por qué decirlo. Hay distintas soluciones, pero quería saber esa en contreto, la de obtener la url que viene en la plantilla por defecto.
    Gracias!

    gaskabur

    (@gaskabur)

    Hola.

    Puede swrvirte la función get_category_link($id_category)
    $result = get_category_link($id_category);
    $result .= ‘tus parametos’;

    https://codex.wordpress.org/Function_Reference/get_category_link

    gracias gaskabur, probaré a ver qué tal!
    saludos

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘Cambiar url de las categorías en un widget’ está cerrado a nuevas respuestas.