Listado categorías con imágenes A-B-C en una página

Drasa Seguir

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588
Hola, después de buscar mucho y probar absolutamente de todo no soy capaz de hacer lo siguiente:

Moved Permanently

Necesito hacer lo mismo para un proyecto similar.

Alguien sabe con quien podría hablar o si alguien sabe hacerlo?

No he encontrado ningún plugin al respecto pero bueno si alguien lo ha visto o sabe cual vale estaría encantado.

Un fuerte saludo y porsupuesto gracias de antemano.


EDITO:

Yo lo que he conseguido es lo siguiente, Juntado los plugin:

Para asignar fotos a cada categoría:
Categories Images ==> https://wordpress.org/plugins/categories-images/

Para hacer un listado de las categoría y poder ordenarlas por A,,B,, C,,:
Multi-Column Taxonomy List ==> https://wordpress.org/plugins/multi-column-taxonomy-list/

Estos plugin son asi de serie pero me han hecho una modificación en el código de:

Multi-Column Taxonomy List para juntar ambos plugin y poder insertar fotos en cada categoría.

En Multi-Column Taxonomy List hay 3 archivos, un .php otro .txt y otro .css

Una vez instalados ambos plugin he cambiado mis archivos .php y .css por los originales

He modificado los originales por esto:

multi-column-taxonomy-list.php
Insertar CODE, HTML o PHP:
<?php
/*
Plugin Name: Multi-Column Taxonomy List
Description: List your categories, tags, or custom taxonomies into multiple, customizable, columns.
Author: Matthew Muro
Author URI: http://matthewmuro.com
Version: 1.5
*/

/*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/


/**
 * Template tag function
 *
 * @since 1.0
 * [MENTION=57775]echo[/MENTION] class function Unordered lists to taxonomies
 */
function multi_column_tax_list( $args = '' ){
	// Create new class instance
	$template_tag = new MCTL();

	// Parse the arguments into an array
	$args = wp_parse_args( $args );

	// Print the output
	echo $template_tag->shortcode( $args );
}

// Instantiate new class
$mctl = new MCTL();

// Multi-Column Taxonomy List class
class MCTL{

	public function __construct(){
		// Create the shortcode
		add_shortcode( 'mctl', array( &$this, 'shortcode' ) );

		// Make sure our CSS gets added via wp_head
		add_action( 'wp_head', array( &$this, 'css' ) );
	}

	/**
	 * Add the CSS
	 *
	 * @since 1.0
	 */
	public function css(){
		echo apply_filters( 'mctl_css', '<link rel="stylesheet" href="' . plugins_url( 'css/multi-column-taxonomy-link.css', __FILE__ ) . '" type="text/css" />' );
	}

	/**
	 * Get all taxonomies that have been registered and are set to public
	 *
	 * @since 1.0
	 * @uses get_taxonomies() Returns an array of taxonomy objects matching the query parameters.
	 * @return $tax_terms array All taxonomies and associated metadata.
	 */
	public function get_tax( $tax_name = 'category', $terms_args = array() ){
		// Only use public taxonomies, the default being 'category'
		$tax_args = array(
			'public' => true,
			'name'   => $tax_name
		);

		// Get the taxonomy data as objects
		$taxonomies = get_taxonomies( $tax_args, 'objects' );

		// Setup our $tax_terms array
		$tax_terms = array();

		// If any result for the taxonomy, loop through and load our $tax_terms array with the terms
		if ( $taxonomies ) :
			foreach ( $taxonomies as $taxonomy ) {
				$tax_terms[] = get_terms ( $taxonomy->name, $terms_args );
			}
		endif;

		return $tax_terms;
	}

	/**
	 * Get all categories that will be used as options.
	 *
	 * @since 1.0
	 * @uses get_categories() Returns an array of category objects matching the query parameters.
	 * @return $cat array All category slugs.
	 */
	public function shortcode( $atts ){

		$output = $feed = $feed_img = $first_letter = $last_letter = '';

		// Extract shortcode attributes, set defaults
		extract( shortcode_atts( array(
			'taxonomy'           => 'category',
			'title'              => 'Categories',
			'title_container'    => 'h3',
			'columns'            => '1',
			'orderby'            => 'name',
			'order'              => 'ASC',
			'alpha_grouping'     => '1',
			'show_count'         => '0',
			'exclude'            => '',
			'parent'             => '',
			'child_of'			 => '0',
			'rss'                => '0',
			'rss_image'          => '',
			'number'             => '',
			'like'               => '',
			'search'			 => '',
			), $atts )
		);

		// Build an array of arguments for the get_terms parameters
		$args = array(
			'orderby'    => $orderby,
			'order'      => $order,
			'show_count' => $show_count,
			'exclude'    => $exclude,
			'parent'     => $parent,
			'child_of'	 => $child_of,
			'number'     => $number,
			'name__like' => $like,
			'search'	 => $search,
		);

		// Get the terms, based on taxonomy name
		$taxonomies = $this->get_tax( $taxonomy, $args );

		$output .= '<div class="multi-column-taxonomy-list">';

		foreach ( $taxonomies as $tax ) :
			// If the user has set a title, add it to the output
			$output .= ( $title ) ? "<$title_container>$title</$title_container>" : '';
			
			// Count the terms
			$count = count( $tax );

			// Round up to determine how many terms per column
			$per_column = ceil( $count / $columns );

			// Will print out our first <ul>
			$open_ul = true;

			// Set the column index for the CSS class
			$col_index = 1;

			// Set the tax index to find the last item
			$tax_index = 1;

			// Loop through the $tax objects and print out our columns
			foreach ( $tax as $val ) :
				$image_url = z_taxonomy_image_url($val->term_id);
				// If true, print out the opening <ul> tag and reset our counter
				if ( $open_ul == true ) :
					$output .= sprintf( '<ul class="multi-column-%d">', $col_index );

					// Set this to prevent the open <ul> from printing until ready for it
					$open_ul = false;

					// Resets our counter
					$i = 1;

					// Increase the column index for the CSS class
					$col_index++;
				endif;

				// Add alphabetical grouping
				if ( $alpha_grouping ) :
					// Get first letter
					$first_letter = substr( $val->name, 0, 1 );

					// If current letter does not match last one, it's new
					if ( $first_letter !== $last_letter ) :

						$output .= sprintf( '<li class="multi-column-alpha-group">%s</li>', $first_letter );

						// Save current letter for next comparison
						$last_letter = $first_letter;
					endif;
				endif;

				// Get the term link
				$link = get_term_link( $val->slug, $taxonomy );

				// Always check if it's an error before continuing. get_term_link() can be finicky sometimes
				if( is_wp_error( $link ) )
					continue;

				// If $rss is true, make the link point to the feed and add the RSS image
				if ( $rss == 1 ) :
					$feed = 'feed';

					$feed_img_src = ( $rss_image ) ? $rss_image : includes_url() . 'images/rss.png';
					$feed_img = sprintf( '<span class="rss"><img alt="RSS" src="%s" style="border:0"></span>', $feed_img_src );
				endif;

				// If $show_count is true, display the count
				$display_count = ( $show_count == 1 ) ? sprintf( ' <span class="multi-column-count">(%d)</span>', $val->count ) : '';

				// The taxonomy output
				$output .= '<div id="contenedor">';
				$output .= '<div id="espacio1">';
				$output .= sprintf( '<li><a href="%1$s%2$s" rel="tag">%3$s%4$s%5$s<img src="%6$s" alt=""></a></li>', $link, $feed, $val->name, $display_count, $feed_img, $image_url );
				$output .= '</div>';
				$output .= '</div>';
				// If our counter is at our limit and not the last item, output the closing </ul>
				if ( $i == $per_column && $tax_index !== $count ) :
					$output .= '</ul>';

					// Set this to true so the next opening <ul> can print
					$open_ul = true;
				endif;

				// Increase the counters for each term
				$i++;
				$tax_index++;
			endforeach;

			$output .= '</ul></div>';
		endforeach;
		
		return $output;
	}
}
?>

Y este en CSS

multi-column-taxonomy-link.css

Insertar CODE, HTML o PHP:
div.multi-column-taxonomy-list {
	clear:both;
}

.multi-column-taxonomy-list ul {
	float:left;
	margin-left:0;
	padding:10px 20px 0 0;
	list-style:none;
	width:31%
}

	.multi-column-taxonomy-list li {
		margin: 0;
	}

.multi-column-alpha-group {
	font-weight: bold;
	padding: 5px 10px;
	margin-top: 10px;
}

ul.multi-column-3 {
	padding-right:0;
}

.multi-column-taxonomy-list a {
	display:block;
	padding:4px 0 4px 2px;
	border-bottom:1px dotted #53575f;
}

	.multi-column-taxonomy-list a:hover {
		background-color:#f0f0f0;
	}

.multi-column-taxonomy-list span.rss {
	float:right;
	margin:2px 2px 0 0;
	text-decoration:none;
}
#contenedor{
margin:0 auto;
padding:0;
width:632px;
text-align:center;
height:auto;
background:transparent;
}
#espacio1{
padding:0;
width:144px;
float:left;
background:transparent;
height:auto;
border:solid black 2px;
margin-right:10px;
margin-top: 10px
}


Con esto he conseguido que funcione en algunos themes de wordpress pero no se porque no me funciona en otros.

Por ejemplo con esta modificación en este teme si funciona "Twenty Thirteen"

Dejo una foto de como queda en el them "Twenty Thirteen"

http://i.imgur.com/fx8CKst.png

Y en mi theme que es "Detube" mirad como queda:

Dejo la url directa de mi web de pruebas: Moved Permanently

Muchas gracias de antemano.
 
Última edición:

IngGeek

Kappa
SEO
Verificación en dos pasos activada
Desde
28 Oct 2013
Mensajes
2.514
Con plugin no lo encontrarás Jejeje ya que mostrar categorías por orden alfabético es una opción de wordpress. Sin embargo el sitio que pones no está hecho en wordpress :/.

Tendrás a) encontrar un tema que ya tenga la codificación por default para mostrar la imagen e la categoría.

B) programar esas líneas en el tema actual.

Saludos

Enviado desde mi Nexus 5 mediante Tapatalk
 

emski

Pi
Verificación en dos pasos activada
Desde
27 Jul 2012
Mensajes
5.187
Yo lo que haría seria poner una pagina estatica de portada, crear un galería y ahí poner las letras y enlace desde la imagen a la categoría, eso si, la miniatura sería la misma siempre hasta que la cambiaras :encouragement:
 

Drasa

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588
Con plugin no lo encontrarás Jejeje ya que mostrar categorías por orden alfabético es una opción de wordpress. Sin embargo el sitio que pones no está hecho en wordpress :/.

Tendrás a) encontrar un tema que ya tenga la codificación por default para mostrar la imagen e la categoría.

B) programar esas líneas en el tema actual.

Saludos

Enviado desde mi Nexus 5 mediante Tapatalk


Correco wordpress puede mostrarlas en ese sentido he descrito lo que he editado el post para que veais lo que hice para conseguir el efecto que quiero juntando dos plugin.

Pero alfinal del todo en mi theme no me lo muestra bien.

Un saludo

---------- Post agregado el 19-abr-2014 hora: 16:30 ----------

Yo lo que haría seria poner una pagina estatica de portada, crear un galería y ahí poner las letras y enlace desde la imagen a la categoría, eso si, la miniatura sería la misma siempre hasta que la cambiaras :encouragement:

Pero con tu sistema abría que meter cada categoría una a una en esa pagina estática no?

Y lo malo que habría que estar pendiente de si hay contenido en dicha categoria.

Mira he editado el post primero para mostrar lo que hice, he conseguido juntando dos plugin lo que quiero pero en mi theme no me lo muestra bien y no se porque.... :ambivalence: y en otro themes si funciona...

Gracias y un fuerte saludo!!!
 

CopperDeveloper

Épsilon
Programador
Desde
9 Sep 2012
Mensajes
762
Llego tarde? jeje yo lo hice en un theme que hice desde cero, básicamente puse íconos para cada categoría, pero se puede modificar:
El código en cuestión:

(esto va en functions.php)

function mostrar_categorias() {

$categories = get_categories();
$separator = ' ';
$output = '';
if($categories){
foreach($categories as $category) {
$output .= '<div class="icon-cat"><img style="width:48px; height:48px;" src="' .get_site_url(). '/wp-content/themes/NONMBRE-DE-THEME/imagenes/' . $category->slug . '.png" alt="' . $category->cat_name . '" /><a href="'.get_category_link( $category->term_id ).'" title="' . esc_attr( sprintf( __( "Ver todas las entradas de %s" ), $category->name ) ) . '">'.$category->cat_name.'</a></div>'.$separator;

}
echo trim($output, $separator);
}
}

Lo que tienes que hacer es subir las imágenes a la carpeta "imágenes" dentro de tu theme con el nombre del slug de la categoría, es decir: si tu slug es noticias-diarias, tu imagen se llamará noticias-diarias.
Después configuras en tu style.css la clase icon-cat, que la hice yo para darle un estilo propio, + el style de img donde le das el tamaño...

Por último, en esta parte: $category->slug . '.png" se establece que la extensión que busque sea .png, puedes cambiarla a jpg para subir imágenes de ese formato...
Creo que eso era lo que buscabas, ¿puede ser?

Ah me olvidé, después de pegar esto en functions.php, vas a pegar <?php mostrar_categorias(); ?> donde quieras que se muestren las categorías
 
Última edición:

Drasa

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588
Llego tarde? jeje yo lo hice en un theme que hice desde cero, básicamente puse íconos para cada categoría, pero se puede modificar:
El código en cuestión:

(esto va en functions.php)

function mostrar_categorias() {

$categories = get_categories();
$separator = ' ';
$output = '';
if($categories){
foreach($categories as $category) {
$output .= '<div class="icon-cat"><img style="width:48px; height:48px;" src="' .get_site_url(). '/wp-content/themes/NONMBRE-DE-THEME/imagenes/' . $category->slug . '.png" alt="' . $category->cat_name . '" /><a href="'.get_category_link( $category->term_id ).'" title="' . esc_attr( sprintf( __( "Ver todas las entradas de %s" ), $category->name ) ) . '">'.$category->cat_name.'</a></div>'.$separator;

}
echo trim($output, $separator);
}
}

Lo que tienes que hacer es subir las imágenes a la carpeta "imágenes" dentro de tu theme con el nombre del slug de la categoría, es decir: si tu slug es noticias-diarias, tu imagen se llamará noticias-diarias.
Después configuras en tu style.css la clase icon-cat, que la hice yo para darle un estilo propio, + el style de img donde le das el tamaño...

Por último, en esta parte: $category->slug . '.png" se establece que la extensión que busque sea .png, puedes cambiarla a jpg para subir imágenes de ese formato...
Creo que eso era lo que buscabas, ¿puede ser?

Ah me olvidé, después de pegar esto en functions.php, vas a pegar <?php mostrar_categorias(); ?> donde quieras que se muestren las categorías


Hola muchísimas gracias por responder, llevo dos días con este tema y ya me quita el sueño jaja.

Tengo unas dudas, con tu modo Mostraría la A y debajo la categorais a.... la B y debajo las categorias b.....?

Lo digo porque en la función mia de más arriba lo que hace que funcione eso es 'alpha_grouping' => '1', veo que el tuyo no lo lleva .

En esta parte: "Después configuras en tu style.css la clase icon-cat, que la hice yo para darle un estilo propio, + el style de img donde le das el tamaño."


Podrías pasarme un ejemplo aunque fuera el tuyo ya lo iría yo modificando a mi gusto!

A se me olvidaba, con tu método se puede mostrar también el numero de post que contiene?

No tendras un ejemplo de como te quedaba!

Muchisimas gracias Coperfield por tu respuesta en cuanto tenga los style me pongo a probar si me funcina.

Un saludo!
 

CopperDeveloper

Épsilon
Programador
Desde
9 Sep 2012
Mensajes
762
Hola muchísimas gracias por responder, llevo dos días con este tema y ya me quita el sueño jaja.

Tengo unas dudas, con tu modo Mostraría la A y debajo la categorais a.... la B y debajo las categorias b.....?

Lo digo porque en la función mia de más arriba lo que hace que funcione eso es 'alpha_grouping' => '1', veo que el tuyo no lo lleva .

En esta parte: "Después configuras en tu style.css la clase icon-cat, que la hice yo para darle un estilo propio, + el style de img donde le das el tamaño."


Podrías pasarme un ejemplo aunque fuera el tuyo ya lo iría yo modificando a mi gusto!

A se me olvidaba, con tu método se puede mostrar también el numero de post que contiene?

No tendras un ejemplo de como te quedaba!

Muchisimas gracias Coperfield por tu respuesta en cuanto tenga los style me pongo a probar si me funcina.

Un saludo!

Habría que agregarle esas cosas al código, el theme no lo tengo a mano porque al final cambié el diseño y le saqué los íconos, pero guardé la función para tenerla a mano por las dudas, lo que hace es mostrar el ícono (o imagen) y el nombre de la categoría. En mi theme lo tenía de forma que se muestre el ícono, el nombre abajo de cada uno, y ordenado en forma de grilla de 3x2.

---------- Post agregado el 19-abr-2014 hora: 17:25 ----------

la configuración de las categorías las haces con el array que le corresponde:

Deberías agregar esto al principio dela función:

$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'category',
'pad_counts' => false

);

después, en el momento de llamar a la función get_categories(); la llamas con args: get_categories($args); y así se aplican las características que le diste al momento de mostrarse. Sería largo de explicar lo que hace cada parámetro, así que te dejo el link de wordpress que lo expica: Function Reference/get categories « WordPress Codex, fijate ahí está el modo de mostrar las categorías hijas y el orden...
 

Drasa

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588
Habría que agregarle esas cosas al código, el theme no lo tengo a mano porque al final cambié el diseño y le saqué los íconos, pero guardé la función para tenerla a mano por las dudas, lo que hace es mostrar el ícono (o imagen) y el nombre de la categoría. En mi theme lo tenía de forma que se muestre el ícono, el nombre abajo de cada uno, y ordenado en forma de grilla de 3x2.


Gracias por la ayuda pero sere tonto!!! he conseguido ordenarlas bien!!!

mira que soy tonto tio mira que he estado horas y hora y nada.

He cambiado:

.multi-column-taxonomy-list ul {
float:left;
margin-left:0;
padding:10px 20px 0 0;
list-style:none;
width:31%
}


por:

.multi-column-taxonomy-list ul {
float:left;
margin-left:0;
padding:10px 20px 0 0;
list-style:none;
width:15%
}

Y se me muestran bien.

Joer a lo tonto y mira...
 

CopperDeveloper

Épsilon
Programador
Desde
9 Sep 2012
Mensajes
762
Gracias por la ayuda pero sere tonto!!! he conseguido ordenarlas bien!!!

mira que soy tonto tio mira que he estado horas y hora y nada.

He cambiado:

.multi-column-taxonomy-list ul {
float:left;
margin-left:0;
padding:10px 20px 0 0;
list-style:none;
width:31%
}


por:

.multi-column-taxonomy-list ul {
float:left;
margin-left:0;
padding:10px 20px 0 0;
list-style:none;
width:15%
}

Y se me muestran bien.

Joer a lo tonto y mira...

suele pasar jaja, espero y te haya servido el código.
 

Drasa

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588

CopperDeveloper

Épsilon
Programador
Desde
9 Sep 2012
Mensajes
762
jajajaj si mira tio aprece que lo muestra bien: http://forobeta.com/redirect-to/?redirect=http://goo.gl/d8Qdrn

Lo único sabría orientame como hacer una adaptación responsibe???

Aqui es como se veería:
Dimensions

Muchas gracias tio.

Y tu código fijo que si no es ami alguien le valdra porque esto es muy buscado nose porque no hay un plugin que lo haga...

Para usar otro tipo de dimensiones o diseño cuando se usa cierto tipo de pantalla basta con poner en tu css: @ media screen and (max-width: 480px) {
Tus css especiales cuando se miran desde pantallas más chicas que 480 px
}
 

Drasa

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588
Para usar otro tipo de dimensiones o diseño cuando se usa cierto tipo de pantalla basta con poner en tu css: @ media screen and (max-width: 480px) {
Tus css especiales cuando se miran desde pantallas más chicas que 480 px
}


Gracias probare más adelante con ello y mi última pregunta sabría como poder poner arriba del todo en la entrada del post El abecedario ABCDEFG...

Y que cuando alguien pulse en una letra le lleve hasta donde se encuentra abajo?

Un saludo!
 

CopperDeveloper

Épsilon
Programador
Desde
9 Sep 2012
Mensajes
762
Gracias probare más adelante con ello y mi última pregunta sabría como poder poner arriba del todo en la entrada del post El abecedario ABCDEFG...

Y que cuando alguien pulse en una letra le lleve hasta donde se encuentra abajo?

Un saludo!

Si, lo que necesitas es poner <div id="aca-quiero-llegar"> </div>... A este div lo usas donde quieras. Después arriba, en el abecedario que queres colocar pones: <a href="#aca-quiero-llegar">Texto que se va a ver para clickear</a>
Entonces, cuando clickees el <a> te va a mandar a la posición donde esta el div id...
 

Drasa

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
14 Mar 2014
Mensajes
588
Si, lo que necesitas es poner <div id="aca-quiero-llegar"> </div>... A este div lo usas donde quieras. Después arriba, en el abecedario que queres colocar pones: <a href="#aca-quiero-llegar">Texto que se va a ver para clickear</a>
Entonces, cuando clickees el <a> te va a mandar a la posición donde esta el div id...

Tremendo amigo te debe una de verdad.

Más tarde pruebo tus consejos ahora tengo que salir.

muchas gracias ee enserio.

Un saludo! y hasta otra! que no creo que sea tarde jaja

Saludoss!
 
Arriba