Cómo quitar el área restringida para entrar en WordPress de Digital Ocean (y otros)

Hace un par de días instalé un par de sitios WordPress en mi nuevo servidor en Digital Ocean via “One-click WordPress installation”. Cuando quise entrar en el admin me muestra una ventana de “Restricted Area” que me pide usuario y contraseña.

Vale. Intento con la información del servidor y no funciona, con la info de mi cuenta de administrador que acabo de configurar y tampoco. Bueno, ya se está poniendo fastidioso esto.

Entro en mi servidor via SSH aparece la información: tengo que poner una clave diferente que me muestra en el servidor para poder entrar en el administrador. Viva la seguridad! pero esto muy poco práctico.

Bueno, ya logre entrar, instalé un tema, un par de plugins y todo bien. Luego cuando vuelvo a entrar vuelve la misma ventana del amor. AAAaaaarrrgghhh! no de nuevo!

Cómo quito la P*** ventana!?

En verdad es bastante sencillo según el artículo de Digital Ocean (https://www.digitalocean.com/community/tutorials/one-click-install-wordpress-on-ubuntu-14-04-with-digitalocean)

1. Entra en tu servidor via SSH.

Sólo como recordatorio entras desde tu terminal

$ ssh root@<el IP de tu servidor>

 

2. Actualiza la configuración de Apache

Edita el archivo de configuración de Apache usando nano:

nano /etc/apache2/apache2.conf

Dentro del archivo buscas la sección que maneja “/wp-admin/” que se ve mas o menos así:

<DirectoryMatch ^.*/wp-admin/>
    AuthType Basic
    AuthName "Please login to your droplet via SSH for login details."
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</DirectoryMatch>

3. Comenta la sección de /wp-admin/

Para comentar solo tienes que agregar el símbolo de numeral (#) antes de cada línea así:

#<DirectoryMatch ^.*/wp-admin/>
#    AuthType Basic
#    AuthName "Please login to your droplet via SSH for login details."
#    AuthUserFile /etc/apache2/.htpasswd
#    Require valid-user
#</DirectoryMatch>

Cerrar y guardar.

4. Reinicia Apache

Para ver los cambios vas a tener que reiniciar Apache así:

service apache2 restart

Ahora si vas a poder entrar en el administrador /wp-admin/ sin tener que poner tus datos.

Solucionado: Error 403 en WordPress con el .htaccess

Luego de instalar el plugin que me iba a solucionar todos los problemas me encuentro con que el ambiente local que tengo instalado en mi maquina me da el error.

Forbidden 403 Error You don’t have permission to access

Luego de revisar los privilegios de las carpetas y ver que todo estaba en orden y que no solucionaba nada, recordé que a veces los plugins se meten con los .htaccess y rompen las redirecciones.

La solución: Agregar Options +FollowSymLinks al .htaccess en la base de mi instalación WordPress.

El código base quedaría así:

Options +FollowSymLinks

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Como usar los shortcodes en un tema de WordPress

Los shortcode son una etiqueta especial que se puede pegar en los posts o páginas y que serán reemplazados con un contenido diferente cuando veas la versión en el website. Si alguna vez has agregado una galería en tu blog entonces ya sabes como se ve un shortcode.

Usualmente estos códigos se usan para agregar contenido en el administrador, pero a veces necesitamos poner el código en el tema directamente. Afortunadamente WordPress tiene una función muy sencilla que te deja agregar shortcodes en tu tema con solo agregar este código:

<?php echo do_shortcode("[example_shortcode]"); ?>

Esta herramienta es muy util pero es dependiente del plugin que estés usando. Así que recuerda que si cambias de plugin o borras el que tienes vas a tener que limpiar donde hayas puesto este código.

Incluir scripts y css con add_action

Para agregar los scripts a tu tema de la forma WordPress tienes que modificar el
functions.php
y agregar unas acciones.

function enqueue_js_scripts()
{

// Register the script like this for a theme:
wp_register_script( 'bootstrap-min', get_template_directory_uri() . '/js/bootstrap.min.js', array( 'jquery' ) );
// For either a plugin or a theme, you can then enqueue the script:
wp_enqueue_script( 'bootstrap-min' );
}
add_action( 'wp_enqueue_scripts', 'enqueue_js_scripts' );

function enqueue_css_styles()
{
wp_register_style('css-bootstrap-min', get_template_directory_uri() . '/css/bootstrap.min.css',false,'13.02.05','all');
wp_register_style('css-bootstrap-responsive', get_template_directory_uri() . '/css/bootstrap-responsive.min.css','css-bootstrap-min','13.02.05','all');
wp_register_style('css-main', get_template_directory_uri() . '/css/main.css','css-main','13.02.05','all');
wp_register_style('font-awesome', get_template_directory_uri() . '/css/font-awesome.css','font-awesome','13.02.05','all');
// For either a plugin or a theme, you can then enqueue the style:
wp_enqueue_style( 'css-bootstrap-min' );
wp_enqueue_style( 'css-bootstrap-responsive' );
wp_enqueue_style( 'font-awesome' );
wp_enqueue_style( 'css-main' );
}
add_action( 'wp_enqueue_scripts', 'enqueue_css_styles' ); 

referencias: http://codex.wordpress.org/Function_Reference/wp_enqueue_script

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!

WordPress: cambiar el css según la página con is_page()

Este pedazo de código sirve para cargar una hoja de estilos (CSS) dependiendo de la página en que te encuentres.
Las etiquetas condicionales is_page() determinan en que página te encuentras y de ahí puedes elegir
que hoja de estilos o código se imprima.

<?php if (is_page(array('about','credits','links'))) { ?>
	<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/widesidebar.css" type="text/css" media="screen" />
<?php } elseif (is_page(array('contact','media-room','store','projects'))) { ?>
	<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/nosidebar.css" type="text/css" media="screen" />
<?php } else { ?>
	<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>"  type="text/css" media="screen" />
<?php } ?>

Via: foro de wordpress http://wordpress.org/support/topic/php-if-statement-comes-back-with-syntax-error

Puedes ver más información en sobre WordPress.org: Etiquetas Condicionales