Plugin simple para ocultar etiquetas en WordPress

  • Autor Autor zumbaoh
  • Fecha de inicio Fecha de inicio
Z

zumbaoh

Hola! he estado buscando un plugin que oculte etiquetas en la página pero que en realidad existan...es decir: que yo pueda poner estas etiquetas por ejemplo: juegos, accion, juegos de accion y aventuras pero en la página en el apartado etiquetas solo esté la de juegos, y las otras dos ocultas.

resumiendo: ocultar etiquetas

la cosa es que no quiero un super plugin que lo tenga todo, mas bien me interesaria un plugin que sirva solo para esta función o para un par de cosas más

aunque todo es bienvenido, gracias 😉

saludos!!!
 
Eso lo podés hacer con algo de código... O sea, borrando código.

Igual, vos lo que buscás es, en una página de etiquetas, hacer que no aparezcan, o que no aparezcan en los post??
 
No necesitas plugin alguno, si quieres dime cual es el theme que estas usando y te ayudo, saludo... todo es cuestión de borrar unas cuantas lineas de código y todo queda listo 😀
 
Con unos cuantos cambios en el codigo queda listo... dentro de los posible es mejor que cambies el codigo a que instales un plugin
 
estas soluciones de cambiar el codigo las veo muy interesantes pero tambien pensad que el blog lo actualizo y añado constantemente etiquetas, si cambiarlo con codigo supone estar a cada etiqueta tocar el codigo y volviendolo a subir.... no se nose, soy un poco vago >.< si existe un plugin como ya dije, pequeñito y que se use solo para esta funcion o dos mas perfecto, si es algo mas grande tambien me interesaria que lo pusierais, cualquier plugin que cuente con esta opcion me viene bien, siempre prefiriendo como ya sabeis, que sea pequeño y no chupe muchos recursos.

espero la respuesta acerca del codigo por que la veo muy interesante.
 
Hace una media hora que estoy armando un código para hacer lo que queres hacer, pero llegue a un punto en que no puedo lograrlo sin editar archivos del core.

Igualmente dejo los cambios que hay que hacer, si algún programador pasa por el topic que tire tips.
(Nunca me había metido con el core de WP, hasta ahora...)

  • Solo esta probado en WordPress 3.0
  • No esta comprobado si causa efectos secundarios (aunque, supuestamente, solamente los ocasionaria mientras el código se esté ejecutando)
  • NO se que pasara si al actualizarse la version de wordpress se modifica la tabla donde "estan" las tags.
  • NO me hago responsable del código (Salvo que funcione y me quieras agradecer) (?)


Primero, ejecutar en la db:
Insertar CODE, HTML o PHP:
ALTER TABLE  `wp_term_taxonomy` ADD  `deletefromindex` INT( 1 ) NOT NULL ;
(Reemplazar wp_ por tu prefijo)

Agregar en el functions.php del theme (Si, si, podría usarse un plugin, pero me fue mas rápido hacerlo de esta forma):
Insertar CODE, HTML o PHP:
// Agregar la opcion "Eliminar del index" cuando editas la tag
add_action('edit_tag_form_fields', 'delete_tag_from_index');
function delete_tag_from_index($tag)
{
?>
	<tr class="form-field">
		<th scope="row" valign="top"><label for="slug">Eliminar del index</label></th>
		<td><input name="deletefromindex" style="width: 20px;" id="deletefromindex" type="checkbox" <?php if($tag->deletefromindex) : ?>checked="checked"<?php endif; ?> />
		<p class="description">Seleccionar si deseas no mostrar la tag en el index</p></td>.
	</tr>
<?php
	return true;
}

// Guardar la opción de "eliminar del index" cuando se edite la tag
add_action('edited_term_taxonomy', 'do_delete_tag_from_index');
function do_delete_tag_from_index($tagid = false, $taxonomy = false)
{
	global $wpdb, $deletefromindex, $args;
	
	if($_POST['deletefromindex'] == 'on')
		$deletefromindex = 1;
	else
		$deletefromindex = 0;
	
	$wpdb->update( $wpdb->term_taxonomy, compact( 'deletefromindex' ), array( 'term_taxonomy_id' => $tagid ) );
	
	return true;
}

// Esta funcion imita a get_the_tags
function get_the_tags_noindex($before = null, $sep = null, $after = null)
{
	$terms = get_the_terms( '0', 'post_tag' );

	if ( is_wp_error( $terms ) )
		return $terms;

	if ( empty( $terms ) )
		return false;

	foreach ( $terms as $term ) {
		if(!$term->deletefromindex)
		{		
			$link = get_term_link( $term, $taxonomy );
			if ( is_wp_error( $link ) )
				return $link;
			$term_links[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
		}
	}

	$term_links = apply_filters( "term_links-$taxonomy", $term_links );

	return $before . join( $sep, $term_links ) . $after;
}

// Esta funcion imita a the_tags
function the_tags_noindex($before = null, $sep = null, $after = null)
{
	echo get_the_tags_noindex($before, $sep, $after);
}

Luego debes reemplazar the_tags(***) por the_tags_noindex(***) en tus ficheros del theme.

Al hacer todo esto debería hacer aparecer una nueva opción cuando editas una tag en el panel de administrador. Seleccionala (es un checkbox) y la tag no se mostrará nunca más, siempre y cuando se use the_tags_noindex.

Espero que sirva para algo 😛

EDITADO: Tomando mate, lejos de la pc, se me ocurrio crear otra funcion imitando a the_tags, pero que borre las tags que no tendrían que mostrarse...
Muy simple, muy fácil, y no se me había ocurrido para nada. Actualizé mucha parte del post.
 
Última edición:
Hace una media hora que estoy armando un código para hacer lo que queres hacer, pero llegue a un punto en que no puedo lograrlo sin editar archivos del core.

Igualmente dejo los cambios que hay que hacer, si algún programador pasa por el topic que tire tips.
(Nunca me había metido con el core de WP, hasta ahora...)

  • Solo esta probado en WordPress 3.0
  • No esta comprobado si causa efectos secundarios (aunque, supuestamente, solamente los ocasionaria mientras el código se esté ejecutando)
  • NO se que pasara si al actualizarse la version de wordpress se modifica la tabla donde "estan" las tags.
  • NO me hago responsable del código (Salvo que funcione y me quieras agradecer) (?)


Primero, ejecutar en la db:
Insertar CODE, HTML o PHP:
ALTER TABLE  `wp_term_taxonomy` ADD  `deletefromindex` INT( 1 ) NOT NULL ;
(Reemplazar wp_ por tu prefijo)

Agregar en el functions.php del theme (Si, si, podría usarse un plugin, pero me fue mas rápido hacerlo de esta forma):
Insertar CODE, HTML o PHP:
// Agregar la opcion "Eliminar del index" cuando editas la tag
add_action('edit_tag_form_fields', 'delete_tag_from_index');
function delete_tag_from_index($tag)
{
?>
	<tr class="form-field">
		<th scope="row" valign="top"><label for="slug">Eliminar del index</label></th>
		<td><input name="deletefromindex" style="width: 20px;" id="deletefromindex" type="checkbox" <?php if($tag->deletefromindex) : ?>checked="checked"<?php endif; ?> />
		<p class="description">Seleccionar si deseas no mostrar la tag en el index</p></td>.
	</tr>
<?php
	return true;
}

// Guardar la opción de "eliminar del index" cuando se edite la tag
add_action('edited_term_taxonomy', 'do_delete_tag_from_index');
function do_delete_tag_from_index($tagid = false, $taxonomy = false)
{
	global $wpdb, $deletefromindex, $args;
	
	if($_POST['deletefromindex'] == 'on')
		$deletefromindex = 1;
	else
		$deletefromindex = 0;
	
	$wpdb->update( $wpdb->term_taxonomy, compact( 'deletefromindex' ), array( 'term_taxonomy_id' => $tagid ) );
	
	return true;
}

// Esta funcion imita a get_the_tags
function get_the_tags_noindex($before = null, $sep = null, $after = null)
{
	$terms = get_the_terms( '0', 'post_tag' );

	if ( is_wp_error( $terms ) )
		return $terms;

	if ( empty( $terms ) )
		return false;

	foreach ( $terms as $term ) {
		if(!$term->deletefromindex)
		{		
			$link = get_term_link( $term, $taxonomy );
			if ( is_wp_error( $link ) )
				return $link;
			$term_links[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
		}
	}

	$term_links = apply_filters( "term_links-$taxonomy", $term_links );

	return $before . join( $sep, $term_links ) . $after;
}

// Esta funcion imita a the_tags
function the_tags_noindex($before = null, $sep = null, $after = null)
{
	echo get_the_tags_noindex($before, $sep, $after);
}

Luego debes reemplazar the_tags(***) por the_tags_noindex(***) en tus ficheros del theme.

Al hacer todo esto debería hacer aparecer una nueva opción cuando editas una tag en el panel de administrador. Seleccionala (es un checkbox) y la tag no se mostrará nunca más, siempre y cuando se use the_tags_noindex.

Espero que sirva para algo 😛

EDITADO: Tomando mate, lejos de la pc, se me ocurrio crear otra funcion imitando a the_tags, pero que borre las tags que no tendrían que mostrarse...
Muy simple, muy fácil, y no se me había ocurrido para nada. Actualizé mucha parte del post.

joder, increible respuesta Santiago, te llevo poniendo deditos verdes casi todos los dias xD gracias de veras!!!! podrías incluso hacerlo un plugin no? o hay que desarrollarlo un poco más.. yo como no entiendo demasiado XD lo veo muy muy util en forma de codigo pero de plugin... tendrias exito XD
 
Última edición:
Aca te dejo el plugin.

Quiero aclarar que en el caso de desactivarlo no borra el campo de la base de datos.
Lo hice así porque si desactivaras el plugin al actualizar la version de WP deberías elegir todas las tags nuevamente.

Ver el archivo adjunto 457

Para borrar la columna de la base de datos necesitarias ejecutar esto en el PHPMyAdmin o similar:
Insertar CODE, HTML o PHP:
ALTER TABLE  `wp_term_taxonomy` DROP  `deletefromindex`
 
Atrás
Arriba