Cambiar la contraseña de un usuario FTP

Para cambiar el usuario de FTP de un servidor Linux Ubuntu los pasos son:

Loguearse por SSH:
$ ssh -i .pem ubuntu@

Privilegios root
$ sudo su

Para cambiar la contraseña del usuario tienes que saber el nombre del usuario FTP que quieres cambiar y el sistema te pregunta por el nuevo email y la confirmacion
$ passwd
Changing password for user blog.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Listo. Prueba el acceso FTP nuevo.

WordPress: Listar autores con posts y thumbnails

Estaba buscando un plugin para un proyecto que necesita listar autores y su post y no encontré un plugin que lo hiciera.
Scott Bressler escribió un script para mostrar a los autores y luego poner la info de los post de cada autor. Muy útil.

Aquí el codigo.

Via: http://www.scottbressler.com/blog/2011/03/wordpress-archive-page-with-all-authors-and-all-posts/

<?php
	// http://www.scottbressler.com/blog/2011/03/wordpress-archive-page-with-all-authors-and-all-posts/
	
	// Argumentos para pasar para el get_users
	$args = array( 'orderby' => 'display_name', 'order' => 'ASC', 'who' => 'autores' );
	// Query for the users
	$autores = get_users( $args );
?> 
 
<?php
	// Bucle por todos los usuarios, imprimiendo los nombres con vinculos a su sección de archivos
	for ( $i = 0; $i < count( $autores ); ++$i ) {
		$autor = $autores[$i];
			echo "<a href='#{$autor->user_nicename}'>$autor->display_name</a>";
		if ( $i < count( $autores ) - 1 ) {
			echo ' | ';
		}
	}
?>
	 
<?php
	// Bucle por todos usuarios, imprimiendo todos los posts mientras corre
	foreach ( $autores as $autor ) { ?>
		<a name="<?php echo $autor->user_nicename; ?>"></a>
		<div class="autor-posts-wrapper" id="autor-<?php echo $autor->ID; ?>-posts-wrapper">
			<div class="autor-avatar" id="autor-<?php echo $autor->ID; ?>-avatar">
				<?php echo get_avatar( $autor->ID, 96 ); ?>
			</div>
			<div class="autor-posts" id="autor-<?php echo $autor->ID; ?>-posts">
				<h2><a href="<?php echo get_author_posts_url( $autor->ID ); ?>"><?php echo $autor->display_name; ?></a></h2>
			
			<?php
			// Crea un loop, almacenando todos los post del usuario
			// 'posts_per_page' => -1 busca todos los articulos o puedes de
			$args = array( 'author' => $autor->ID, 'posts_per_page' => -1 );
			$posts = query_posts($args);
			
			// if we already have the output in another template, like:
			// get_template_part( 'loop', 'all-authors' ); // Pulls in loop-all-authors.php from theme
			
			// Ahora que tenemos los posts simula un loop o usa get_template_part
			// si ya tenemos la salida en otra plantilla, como:
			// get_template_part( 'loop', 'all-authors' ); // Saca loop-all-authors.php del tema
			
			
			if ( have_posts() ) : ?>
				<ul class="autor-post-list" id="autor-<?php echo $autor->ID; ?>-post-list">
					<?php while ( have_posts() ) : the_post(); // Imprime lo que queramos para cada post - por ahora solo titulo y fecha ?>
						<li>
							<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> &mdash; <?php echo get_the_date(); ?>
						</li>
					<?php endwhile; ?>
				</ul><!-- #autor-post-list -->
			<?php else: ?>
				<p>Este autor no ha publicado nada aún.</p>
			<?php endif; ?>
			</div><!-- #autor-posts -->
		</div><!-- #autor-posts-wrapper -->
<?php } // Fin de bucle por todos los usuarios ?>

Cómo crear una función en WordPress

Las funciones dentro de WordPress son herramientas eficientes para acciones recurrentes dentro de tu sitio. Aunque son parte de los lenguajes de programación orientada a objetos, WordPress te permite mayor flexibilidad usando esta herramienta.

¿Qué es una función de WordPress?

Las funciones son un componente básico del núcleo de PHP (lenguaje de código en el que se basa WordPress). Sin embargo, esta vez solo vamos a hablar de las funciones dentro de WP.

Una función de WordPress es un modo sencillo y eficaz para acortar código. Te permite agregar una línea de código a tus marcadores en vez de muchas veces las líneas de tu función.
Viene a ser como un acceso directo a un bloque de código largo. Esto es muy conveniente cuando escribes un bloque de código muy largo que vas a usar en varias partes de tu sitio.

Normalmente las funciones se escriben dentro de functions.php de tu tema, que es donde están todas las funciones exclusivas del tema.

4 partes de una función

Podemos dividir la estructura de una función en cuatro partes para que sea fácil de digerir.
Aquí vamos:

1. Nombre de la función

En este caso la primera parte de la función es el mas fácil. Tienes que elegir un nombre para la función que, preferiblemente, describa la acción de lo que hace. Si quisiera hacer una firma para Corchoweb.com pudiera escribir una función que se llame “firma_corchoweb”, por ejemplo.

2. La estructura de la función

Todas las funciones requieren la misma estructura básica. Tienen la palabra “function” que aparece al principio, el nombre de la función, y el contenido entre llaves. Y va así:

firma_corchoweb function () {
/ / Ejemplo de contenido
}

Ya sé que eres detallista y te fijaste en los parentesis. Estos son parte de la estructura y permite que las funciones hagan magia con el código, pero su uso lo hablaremos en otro artículo. Así que pasemos al tercer tema.

3. El contenido es el rey.

Ahora tenemos un nombre la estructura de nuestra función. Pero eso sin contenido no sirve de nada. Así que vamos a agregarle un poco de contenido a nuestra firma.

firma_corchoweb function () {
     Gracias por leernos. Por favor deja tu comentario abajo!
}

Aquí puedes escribir lo que quieras. Desde una firma del autor hasta las fotos de tu perrito lo puedes usar siempre que quieras ahorrar código repetido.

4. Interrumpir el PHP con HTML

HTML y PHP son como agua y aceite, trabajan bien separados, y por eso tenemos que decirle a WordPress cuando estamos hablando de PHP y cuando de HTML. Por supuesto que eso es sumamente fácil. Lo que tenemos que hacer es cerrar el PHP escribiendo ?> para cambiar de PHP a HTML, y <?php para abrir PHP de nuevo y así cambiar de HTML a PHP. Como aquí.

<?php firma_corchoweb function () { ?>
     <p>Gracias por leernos. Por favor deja tu comentario abajo! </p>
<php }; ?>

Ahí está. Eso es una función completa de WordPress. Bastante fácil, ¿no?

Usando la Función

Ahora viene la parte fácil. Usar tu función en el tema de WordPress. Sólo tiene que escribir

<?php firma_corchoweb(); ?>

donde quieras que aparezca la firma dentro del tema.
Incluso puedes repetir la función cuantas veces lo necesites.

Eso es todo!

Redireccionar un dominio con apache para mejorar el SEO

Google recomienda hacer las redirecciones de dominios por el servidor por que esta función le corresponde al servidor (con apache) y no a las aplicaciones tipo php o html.

El objetivo de este tutorial es que al escribir http://dominioviejo.com vaya automaticamente a http://www.dominionuevo.com manteniendo todos los nombres de las páginas y los enlaces.

Los pasos:

1. Asegurate de que tienes 2 sitios web – el sitio antiguo y el nuevo sitio, y que se encuentran en diferentes cuentas (no tiene que estar en IP diferente o diferentes máquinas). Sobre todo que el archivo .htaccess no sea el mismo por que ese es el que vamos a modificar.

2. Tu sitio principal (propio o canónico) debe apuntar hacia el nuevo sitio usando DNS. Todos los viejos dominios deben apuntar hacia el antiguo sitio mediante DNS.
Es decir que Los DNS de http://www.dominionuevo.com apuntan al nuevo servidor con el contenido del sitio nuevo y los viejos dominios hacia el sitio antiguo por DNS.

3. Encuentra el archivo .htaccess en la raíz de tu antigua cuenta. Sí, comienza con un “.” Vamos a trabajar con este archivo. El nuevo sitio no necesita usar esto por que la redirección viene del dominio viejo.

4. Descarga el archivo .htaccess y ábrelo en un editor de texto solamente.

5a. Si tienes el mod_rewrite instalado en el apache, agrega este código:

Options + FollowSymLinks
RewriteEngine on
RewriteCond% {} HTTP_HOST! ^ NEWDOMAIN \ com.
RewriteRule ^ (. *) $ Http://www.newdomain.com/ $ 1 [R = 301, L]

5b. Si no tienes instalado el mod_rewrite, que realmente deberías, yno se puede instalar, entonces puedes utilizar este código en su lugar:

RedirectMatch 301 ^ (. *) $ Http://www.newdomain.com

6. Luego, sube el archivo a la carpeta raíz y prueba tu nueva redirección.

Opcional: Puedes asegurarte que hace la redirección 301 correcta con un HTTP Header viewer.

Puedes leer mas técnicas de redirección aquí: http://www.mcanerin.com/en/articles/301-redirect-apache.asp

Arreglo: z-index de youtube y flash encima de todo

Trabajando hace unos días con un menú desplegable con jQuery noté que en ves de desplegarse por encima del video de youtube el menú se esconde detrás del video.

Primero pensé que era un problema de z-index, pero luego de pelear un rato con los posicionamientos y distintos valores de z-index pensé que sería un problema distinto.

El problema está en el browser pone los objetos flash (no solo los videos de youtube) encima de todos los objetos. http://kb2.adobe.com/cps/155/tn_15523.html y por eso hay que asignarle wmode=opaque o wmode=transparent al embed o código que va a producir el SWF.

En el caso de youtube esto se resuelve simplemente colocando ?wmode=opaque al final del código de embed de crea youtube para iframes.

El código original

<iframe width="560" height="315"
src="http://www.youtube.com/embed/xxxxxxx"
frameborder="0" allowfullscreen></iframe>

El código con el wmode aplicado

<iframe width="560" height="315"
src="http://www.youtube.com/embed/xxxxxxx?wmode=opaque"
frameborder="0" allowfullscreen></iframe>

Esta explicación la hace detalladamente Max Morgan en su artículo Fix youtube iframe overlay and z-index issues y donde incluso propone una solucion para automatizarlo vía jQuery.

Luego hizo una adaptación para cuando el codigo ya tiene variables escritas en donde escribes el código al final de toda la dirección

Código con varibles

http://www.youtube.com/watch?v=1YmPooYpyQw?rel=0

Código con varibles y wmode

http://www.youtube.com/watch?v=1YmPooYpyQw?rel=0&wmode=opaque

Teniendo cuidado que es probable que luego de una variable es probable que el ?wmode tenga que ser con un “&” &wmode

Te sirvió? Soy todo ojos.

Actualización: Jair nos escribió una forma de cambiar el atributo wmode via jQuery

$(document).ready(function() {
	$(“iframe”).each(function(){
		var ifr_source = $(this).attr(‘src’);
		var wmode = “wmode=opaque”;
		if(ifr_source.indexOf(‘?’) != -1) {
			var getQString = ifr_source.split(‘?’);
			var oldString = getQString[1];
			var newString = getQString[0];
			$(this).attr(‘src’,newString+’?'+wmode+’&’+oldString);
		} else {
			$(this).attr(‘src’,ifr_source+’?'+wmode);
		};
	});
});