http://wiki.loretahur.net/api.php?action=feedcontributions&user=Loretahur&feedformat=atomEl Wiki de Loretahur - Contribuciones del usuario [es]2024-03-29T11:26:56ZContribuciones del usuarioMediaWiki 1.26.2http://wiki.loretahur.net/index.php?title=Themes&diff=137Themes2013-01-08T20:57:07Z<p>Loretahur: /* Panel de administración */</p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas:<br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12.<br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas.<br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right]]<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress.<br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda.<br />
*'''search.php''': página donde se muestran los resultados de una búsqueda.<br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web.<br />
<br />
==Sidebars==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
Para usarlas posteriormente, la llamada será de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Barra Lateral Izquierda') ) : <br />
echo "El usuario no ha puesto widgets en esta barra";<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
<br />
== Cabeceras y Footers personalizados ==<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('Cine')) {<br />
get_footer('Cine');<br />
} else {<br />
get_footer();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''):<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('cine')) {<br />
get_header('cine');<br />
} else {<br />
get_header();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios).<br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos.<br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga:<br />
<br />
[[Archivo:Template Hierarchy.png]]<br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''.<br />
<br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
/* <br />
Template Name: Nombre-plantilla <br />
*/<br />
</syntaxhighlight><br />
<br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca:<br />
* Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración).<br />
* Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
get_header();<br />
if (have_posts()) :<br />
while (have_posts()) : the_post();<br />
the_content();<br />
endwhile;<br />
endif;<br />
get_sidebar();<br />
get_footer(); <br />
?><br />
</syntaxhighlight><br />
<br />
<br />
* '''wp_query->current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (have_posts()) : <br />
while (have_posts()) : the_post(); <br />
if ($wp_query->current_post < 3) {<br />
the_content();<br />
} <br />
else {<br />
the_title();<br />
}<br />
endwhile;<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos:<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id.<br />
*'''author=ID''': filtra por usuario, usando el ID del mismo.<br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente.<br />
*'''year=año''': filtra por año.<br />
*'''monthnum=mes''': filtra por mes.<br />
*'''day=día''': filtra por día.<br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
query_posts('posts_per_page=5&author=3&tag=discos');<br />
<br />
//The Loop<br />
if ( have_posts() ) : while ( have_posts() ) : the_post();<br />
..<br />
endwhile; else:<br />
..<br />
endif;<br />
<br />
//Reset Query<br />
wp_reset_query(); ?><br />
</syntaxhighlight><br />
<br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''.<br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post.<br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()].<br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if(!empty($post->post_excerpt)) {<br />
// Si tiene extracto, lo muestra<br />
the_excerpt();<br />
} else {<br />
// Si no, muestra el contenido del post<br />
the_content();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha:<br />
**l = Nombre completo del día de la semana.<br />
**F = Nombre completo para el mes.<br />
**j = Día numérico.<br />
**m = Mes con dos dígitos.<br />
**Y = Año con cuatro dígitos.<br />
**y = Año con dos dígitos.<br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_time('l, j \d\e F, Y'); //Nos muestra Martes, 14 de Septiembre, 2010 ?> <br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día.<br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]):<br />
**bloginfo('name'): muestra por pantalla el nombre del blog.<br />
**bloginfo('description'): muestra por pantalla el nombre del blog.<br />
**bloginfo('url'): muestra por pantalla la dirección del blog.<br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css).<br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme.<br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author].<br />
* [http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_tags('Etiquetas:', ' - ', '<br />'); ?><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca. <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<div class="navigation"><br />
<div class="alignleft"><?php previous_posts_link('','','&laquo; Artículos Anteriores')?></div><br />
<div class="alignright"><?php next_posts_link('','Artículos Siguientes &raquo;','')?></div><br />
</div><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (in_category('3') ){ ?><br />
<img src='/images/plant.png' alt='a plant' /><br />
<?php } elseif (in_category('4') ){ ?><br />
<img src='/images/flower.png' alt='a pretty flower' /><br />
<?php } ?><br />
</syntaxhighlight><br />
<br />
==Custom fields - Campos personalizados==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor:<br />
<br />
[[Archivo:Campos-personalizados.jpg]]<br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_custom_values("nombre-del-custom-field"); ?><br />
</syntaxhighlight><br />
<br />
<br />
O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_meta($post->ID, nombre-del-custom-field); ?><br />
</syntaxhighlight><br />
<br />
<br />
Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc...<br />
<br />
==Panel de administración ==<br />
<br />
Incluyendo el siguiente texto en functions.php podemos eliminar secciones del menú de administración.<br />
*Apartados de primer nivel como "''Posts''", "''Media''", "''Appearance''" y "''Tools''":<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
function remove_menu_items() {<br />
global $menu;<br />
$restricted = array(__('Links'), __('Comments'), __('Media'),<br />
__('Plugins'), __('Tools'), __('Users'));<br />
end ($menu);<br />
while (prev($menu)){<br />
$value = explode(' ',$menu[key($menu)][0]);<br />
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){<br />
unset($menu[key($menu)]);}<br />
}<br />
}<br />
<br />
add_action('admin_menu', 'remove_menu_items');<br />
</syntaxhighlight><br />
<br />
<br />
*Para submenús de segundo nivel, por ejemplo "''Theme''" que está bajo "''Appearance''":<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
function remove_submenus() {<br />
global $submenu;<br />
unset($submenu['index.php'][10]); // Removes 'Updates'.<br />
unset($submenu['themes.php'][5]); // Removes 'Themes'.<br />
unset($submenu['options-general.php'][15]); // Removes 'Writing'.<br />
unset($submenu['options-general.php'][25]); // Removes 'Discussion'.<br />
unset($submenu['edit.php'][16]); // Removes 'Tags'. <br />
}<br />
<br />
add_action('admin_menu', 'remove_submenus');<br />
</syntaxhighlight><br />
<br />
<br />
Para saber el nombre de los submenús, podemos ir a ''wp-admin/menu.php'' y buscar el item que queremos deshabilitar.<br />
<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics):<br />
<br />
<syntaxhighlight lang="php"><br />
/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?><br />
<form method="post" name="update_form" target="_self"><br />
<h1>Google Analytics</h1><br />
<table class="form-table"><br />
<tr><br />
<th>Google Analytics:</th><br />
<td><textarea name="google_analytics" style="width: 95%;" rows="10" /><br />
<?php echo get_option('google_analytics'); ?></textarea><br />Copia el código Google Analytics aquí.</td><br />
</tr><br />
</table><br />
<p class="submit" id="jump_submit"><br />
<input name="submitted" type="hidden" value="yes" /><br />
<input type="submit" name="Submit" value="Save Changes" /><br />
</form><br />
<?php <br />
}<br />
function nombredeltheme_options() {<br />
add_menu_page('Opciones del Theme', __('Opciones del Theme', 'default'), 'edit_themes', __FILE__, 'nombredeltheme_theme');<br />
}<br />
add_action('admin_menu', 'nombredeltheme_options');<br />
</syntaxhighlight><br />
<br />
<br />
Luego ponemos en el footer.php:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php echo get_option('google_analytics'); ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración.<br />
<br />
Para añadir una nueva opción a la barra de administración superior del blog, hay que añadir el código que se muestra a continuación dentro del archivo functions.php (estamos agregando la opción Prueba que es un link a http://core.trac.wordpress.org/diff):<br />
<br />
<syntaxhighlight lang="php"><br />
function incluir_enlace_admin_bar() {<br />
global $wp_admin_bar;<br />
$wp_admin_bar->add_menu( array(<br />
‘id’ => ‘diff’,<br />
‘title’ => __(‘Prueba’),<br />
‘href’ => ‘http://core.trac.wordpress.org/diff’<br />
));<br />
}<br />
add_action( ‘admin_bar_menu’, ‘incluir_enlace_admin_bar’ , 30);<br />
</syntaxhighlight><br />
<br />
==Enlaces de interés==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.<br />
<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Identidad_Digital&diff=136Identidad Digital2012-07-08T19:49:11Z<p>Loretahur: </p>
<hr />
<div>* Michael Donnelly, director de marketing digital de Coca-Cola: "Our home page isn’t just coke.com, it is google.com" [http://www.slideshare.net/iStrategy/coca-colas-social-media-strategy Presentación en slideshare].<br />
* "La clásica teoría de comunicación de masas ya no es válida y debemos segmentar los destinatarios de nuestros mensajes". Dolores Vela.</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Identidad_Digital&diff=135Identidad Digital2012-07-08T19:34:52Z<p>Loretahur: Página creada con '* Michael Donnelly, director de marketing digital de Coca-Cola: "Our home page isn’t just coke.com, it is google.com" [http://www.slideshare.net/iStrategy/coca-colas-social-me...'</p>
<hr />
<div>* Michael Donnelly, director de marketing digital de Coca-Cola: "Our home page isn’t just coke.com, it is google.com" [http://www.slideshare.net/iStrategy/coca-colas-social-media-strategy Presentación en slideshare]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=MediaWiki:Sidebar&diff=134MediaWiki:Sidebar2012-07-08T19:33:15Z<p>Loretahur: </p>
<hr />
<div>* WordPress<br />
** introduccion|Introducción<br />
** wp-config.php|wp-config.php<br />
** plugins|Plugins<br />
** themes|Themes<br />
* Biblioteca 2.0<br />
** biblioteca 2.0|Biblioteca 2.0<br />
* Identidad Digital<br />
** Identidad Digital|Identidad Digital</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Wp-config.php&diff=133Wp-config.php2011-10-13T14:01:54Z<p>Loretahur: </p>
<hr />
<div>En este fichero se pueden definir muchas de las opciones de WordPress. No existe en la carpeta de descarga de WordPress (antes de la instalación). Sin embargo, tras la instalación se genera con algunos datos básicos (host, nombre, usuario y contraseña de la base de datos, ...). Es por esto que debe tener los permisos mínimos de acceso de lectura.<br />
<br />
Otras opciones a configurar desde aquí:<br />
* '''WP_HOME''': para indicar a WP otra url en la que tiene que funcionar.<br />
* '''WP_SITEURL''': para indicar a WP otra url sobre la que tiene que funcionar. Aquí se indica la dirección de administración (normalmente coinciden tanto WP_HOME y WP_SITEURL).<br />
En el siguiente ejemplo vemos como un blog puede funcionar con varias url's diferentes de la de la propia instalación:<br />
<pre><br />
$hostname = $_SERVER['SERVER_NAME'];<br />
$hostname = str_replace('www.', '', $hostname);<br />
if($hostname == 'ejemplo.com') {<br />
define('WP_SITEURL', 'http://www.ejemplo.com/blog');<br />
define('WP_HOME', 'http://www.ejemplo.com/blog');<br />
}else if($hostname == 'ejemplo.es') {<br />
define('WP_SITEURL', 'http://www.ejemplo.es/blog');<br />
define('WP_HOME', 'http://www.ejemplo.es/blog');<br />
}<br />
</pre><br />
* '''WP_CONTENT_DIR''': podemos mover la carpeta wp-content e indicar aquí su nueva ruta física.<br />
<pre><br />
define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );<br />
</pre><br />
* '''WP_CONTENT_URL''': podemos mover la carpeta wp-content e indicar aquí su nueva URI.<br />
<pre><br />
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');<br />
</pre><br />
* '''WP_CACHE''': si se pone a true, se habilita el script <tt>wp-content/advanced-cache.php.</tt><br />
<pre><br />
define('WP_CACHE', true);<br />
</pre><br />
* '''WPLANG''': se define el idioma de la parte de administración del blog. Para ello, previamente tenemos que tener el .mo del idioma en la carpeta languages y poner aquí el nombre del mismo. Por ejemplo, si tenemos un es_ES.mo:<br />
<pre><br />
define('WPLANG', 'es_ES');<br />
</pre><br />
* Security Keys: '''AUTH_KEY''', '''SECURE_AUTH_KEY''', '''LOGGED_IN_KEY,''' '''NONCE_KEY:''' para mejorar la encriptación de las cookies de usuario. Se generan de forma aleatoria [http://api.wordpress.org/secret-key/1.1/ aquí].<br />
* '''SECRET_KEY''': se especifica una passfrase que mejora la encriptación del password de usuarios. Se genera de forma aleatoria [http://api.wordpress.org/secret-key/1.0/ aquí].<br />
* '''WP_ALLOW_REPAIR''': podemos agregar esta variable para permitir que la base de datos se optimice de forma automática.<br />
<pre><br />
define('WP_ALLOW_REPAIR', true);<br />
</pre><br />
* '''WP_MEMORY_LIMIT''': Aumenta el tamaño de la memoria que Wordpress usará y que por defecto es de sólo 32M, muy poco en cuanto que usas una docena de plugins. Debe de ir acompañada de la directiva adecuada en el init de php que, de ser inferior a estos 64M, anularía el efecto.<br />
<pre><br />
define('WP_MEMORY_LIMIT', '64M');<br />
</pre><br />
* '''WP_POST_REVISIONS''': Desactiva el mecanismo de autoguardado de versiones de wordpress si quieres conservar unas bases de datos más pequeñas.<br />
<pre><br />
define('WP_POST_REVISIONS', false);<br />
</pre><br />
En vez de desactivarlo, se puede limitar a un número máximo de revisiones:<br />
<pre><br />
define('WP_POST_REVISIONS', 3); // limita<br />
</pre><br />
* '''WP_ALLOW_MULTISITE''': Activar en Wordpress 3.0 la opción multi-site.<br />
<pre><br />
define(‘WP_ALLOW_MULTISITE’, true);<br />
</pre><br />
* '''FORCE_SSL_LOGIN''': Para forzar que la página de login sea con https, además de configurar en apache la sede web para SSL, debemos agregar este parámetro en wp-config.php.<br />
<pre><br />
define('FORCE_SSL_LOGIN', true);<br />
</pre><br />
* '''FORCE_SSL_ADMIN''': Si queremos forzar también que la zona de administración vaya sobre https, agregaremos este parámetro en wp-config.php.<br />
<pre><br />
define('FORCE_SSL_ADMIN', true);<br />
</pre><br />
<br />
<br />
Más información, en la página de [http://codex.wordpress.org/Editing_wp-config.php Codex WP]<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=132Introduccion2011-08-18T06:49:28Z<p>Loretahur: Agregada infografía</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
[[Image:Wordpress history jazz.jpg|thumb|left]]Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical "''Hello, Dolly!''" en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br />
<br />
En esta infografía elaborada por WPBeginer.com podemos ver las diferencias enter WordPress.org y WordPress.com:<br />
<br />
[[Image:InfoWordpress.jpg|center]]<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administran los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br> <br />
<br />
{| width="700" cellspacing="1" cellpadding="1" border="1"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''[[wp-config.php]]''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Ponemos los permisos de seguridad adecuados a cada carpeta:<br><code>root directory 755<br>wp-includes/ 755<br>htaccess 644<br>wp-admin/index.php 644<br>wp-admin/js/js/ 755<br>wp-content/themes/ 755<br>wp-content/plugins/ 755<br>wp-admin/ 755<br>wp-content/ 755</code><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, es recomendable no crear un usuario administrador con el nombre admin.<br />
* En el actual instalador ya se generan Security Keys en el wp-config.php. Si no fuera así, podemos usar el [https://api.wordpress.org/secret-key/1.1/salt/ Api de WordPress].<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
* [http://speckyboy.com/2011/04/27/20-snippets-and-hacks-to-make-wordpress-user-friendly-for-your-clients 20 Snippets and Hacks to Make WordPress User-Friendly for your Clients]<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Archivo:InfoWordpress.jpg&diff=131Archivo:InfoWordpress.jpg2011-08-18T06:44:37Z<p>Loretahur: Las diferencias entre WordPress.com y WordPress.org</p>
<hr />
<div>Las diferencias entre WordPress.com y WordPress.org</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=130Introduccion2011-04-28T10:46:07Z<p>Loretahur: /* Enlaces de interés */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
[[Image:Wordpress history jazz.jpg|thumb|left|Infografía creada por InfographicLabs ]]Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br> <br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''[[wp-config.php]]''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Ponemos los permisos de seguridad adecuados a cada carpeta:<br><code>root directory 755<br>wp-includes/ 755<br>htaccess 644<br>wp-admin/index.php 644<br>wp-admin/js/js/ 755<br>wp-content/themes/ 755<br>wp-content/plugins/ 755<br>wp-admin/ 755<br>wp-content/ 755</code><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, es recomendable no crear un usuario administrador con el nombre admin.<br />
* En el actual instalador ya se generan Security Keys en el wp-config.php. Si no fuera así, podemos usar el [https://api.wordpress.org/secret-key/1.1/salt/ Api de WordPress].<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
* [http://speckyboy.com/2011/04/27/20-snippets-and-hacks-to-make-wordpress-user-friendly-for-your-clients 20 Snippets and Hacks to Make WordPress User-Friendly for your Clients]<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=129Introduccion2011-01-16T21:58:33Z<p>Loretahur: /* Configuración */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
[[Image:Wordpress history jazz.jpg|thumb|left|Infografía creada por InfographicLabs ]]Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br> <br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''[[wp-config.php]]''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Ponemos los permisos de seguridad adecuados a cada carpeta:<br><code>root directory 755<br>wp-includes/ 755<br>htaccess 644<br>wp-admin/index.php 644<br>wp-admin/js/js/ 755<br>wp-content/themes/ 755<br>wp-content/plugins/ 755<br>wp-admin/ 755<br>wp-content/ 755</code><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, es recomendable no crear un usuario administrador con el nombre admin.<br />
* En el actual instalador ya se generan Security Keys en el wp-config.php. Si no fuera así, podemos usar el [https://api.wordpress.org/secret-key/1.1/salt/ Api de WordPress].<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=128Introduccion2010-12-22T22:50:36Z<p>Loretahur: Agregados los permisos de seguridad por carpetas en Instalación</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
[[Image:Wordpress history jazz.jpg|thumb|left|Infografía creada por InfographicLabs ]]Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br> <br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''[[wp-config.php]]''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Ponemos los permisos de seguridad adecuados a cada carpeta:<br><code>root directory 755<br>wp-includes/ 755<br>htaccess 644<br>wp-admin/index.php 644<br>wp-admin/js/js/ 755<br>wp-content/themes/ 755<br>wp-content/plugins/ 755<br>wp-admin/ 755<br>wp-content/ 755</code><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=127Introduccion2010-10-08T08:14:59Z<p>Loretahur: /* ¿Qué es WordPress? */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
[[Image:Wordpress history jazz.jpg|thumb|left|Infografía creada por InfographicLabs ]]Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br> <br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''[[wp-config.php]]''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Archivo:Wordpress_history_jazz.jpg&diff=126Archivo:Wordpress history jazz.jpg2010-10-08T08:10:04Z<p>Loretahur: </p>
<hr />
<div></div>Loretahurhttp://wiki.loretahur.net/index.php?title=Biblioteca_2.0&diff=125Biblioteca 2.02010-09-26T15:44:32Z<p>Loretahur: </p>
<hr />
<div>* Hay que tener cuidado con la web social: hay muchos experimentos y plataformas transitorias que desaparecen igual que las modas. Así que será importante apostar<br />
* ''Las bibliotecas se ven presionadas para evaluar la forma en la que ofrecen sus servicios a su comunidad. El acceso a la información ha cambiado. La capacidad de la gente para encontrar información ha cambiado. Los mecanismos para organizar la información y darle sentido, han cambiado también. Las formas de almacenamiento y de conservar la información han cambiado. La forma en la que se garantiza la legitimidad y credibilidad de la información han cambiado. Los mecanismos que la gente tiene para reaccionar y contribuir creando más información han cambiado. En resumen, se trata de una nueva ecología de la información que requiere de unas características, habilidades, competencias informacionales muy diferentes tanto para los usuarios de la información como para los bibliotecarios que los ayudan.'' [http://www.nievesglez.com/2010/09/como-nos-afecta-los-bibliotecarios-la.html Nieves González]<br />
<br />
* Herramientas<br />
** [http://www.slideshare.net/ Slideshare]<br />
<br />
<br />
http://www.delicious.com/loretahur/biblioteca+curso</div>Loretahurhttp://wiki.loretahur.net/index.php?title=P%C3%A1gina_Principal&diff=124Página Principal2010-09-25T16:25:21Z<p>Loretahur: </p>
<hr />
<div>Otros sitios en los que ando enredando:<br />
* [http://blog.loretahur.net El Blog de Loretahur], mi cajón de sastre (o de desastre). No preguntéis por la temática porque es de lo más cambiante (igual que la que lo escribe)<br />
* [http://loretahur.net/silencio Silencio], la música es una combinación coherente de sonidos y silencios<br />
* [http://bastardoperatorfromhell.blogspot.com/ BOFH] o dicho de otra forma, Bastard Operator From Hell<br />
* Mis [http://www.flickr.com/photos/loretahur/ fotos] en Flickr<br />
* [http://aprendices.wikispaces.com Aprendices], un lugar de encuentro para aprender en torno a los blogs y el software social en general<br />
* [http://www.e-ghost.deusto.es/phpwiki/ E-ghost]: grupo de software libre de la Universidad de Deusto<br />
* [http://www.loretahur.es/AprendiendoCSS/ Aprendiendo CSS]: curso de CSS desde cero<br />
* [http://nireblog.com NireBlog]: plataforma de creación de blogs con la que colaboro<br />
<br />
<br />
Los contenidos de este wiki están bajo las siguientes categorías:<br />
* [http://wiki.loretahur.net/index.php/Categor%C3%ADa:WordPress Wordpress]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Gesti%C3%B3n_de_idiomas&diff=123Gestión de idiomas2010-09-25T16:22:36Z<p>Loretahur: </p>
<hr />
<div>Lo primero de todo, necesitamos un plugin que consiga gestionar correctamente ese sistema multi-idioma. Para ello, y tras probar unos cuantos, el vencedor ha sido [http://wordpress.org/extend/plugins/xlanguage/ xlanguage]. Las características que le hacen caballo ganador:<br />
* Se encarga de la administración de tantos idiomas como queramos manejar. Esa gestión afecta a los contenidos del blog (tanto posts como páginas estáticas), a las categorías, etiquetas, feeds, theme, etc, …<br />
* En el theme sólo será necesario contar con una carpeta donde almacenar los ficheros de idioma: un .mo con el nombre del idioma. Si tenemos plugins que generan contenidos, también podremos traducirlos y dejar aquí sus .mo.<br />
* Una funcionalidad muy interesante es que gestiona el cambio de idioma mediante cookies, así que si cambiamos el lenguaje que arranca por defecto, en próximas navegaciones recordará nuestra preferencia. También detecta el idioma del navegador, para mostrarnos directamente esa opción.<br />
* Por cada idioma genera una url diferente, lo que hace que los buscadores indexen los contenidos en todos los idiomas. Esa fue una de las razones por las que me decanté por xlanguage y no por [http://wordpress.org/extend/plugins/qtranslate/ qtranslate], que usa la misma dirección para todas las traducciones.<br />
¿Y cómo conseguimos traducir nuestro theme y nuestros plugins? Sencillo: todas las llamadas php que muestren cadenas de texto, tendrán que ir con la función _e() o bien con la función _() (la diferencia entre ambas es que _e hace un echo de la cadena. Es decir, ''echo (“Hola mundo”);'' es lo mismo que ''_e(“Hola Mundo”);'' ). De esta manera, con las [http://svn.automattic.com/wordpress-i18n/tools/trunk/ herramientas] que nos ofrece WordPress para la localización e internalización, podremos generar un .pot del theme donde introducir las traducciones pertinentes para luego generar el .mo que entenderá nuestro xlanguage.<br />
* '''.pot''': este fichero se genera de manera automática y recoge todas las cadenas de texto que aparecen en nuestro site. Por cada una de ellas, aparece justo debajo el espacio donde se debe dejar su traducción. Este es un ejemplo donde aparece primero el lugar en el que está dentro del código, la cadena en sí y el espacio donde se dejará la traducción correspondiente:<br />
<pre><br />
# presentacion.php:36<br />
msgid “Hello World”<br />
msgstr “”<br />
</pre><br />
* '''.po''': es el fichero .pot con las traducciones ya incluidas. Siguiendo el ejemplo anterior:<br />
<pre><br />
# presentacion.php:36<br />
msgid “Hello World”<br />
msgstr “Hola Mundo”<br />
</pre><br />
* '''.mo''': fichero binario que entienden las máquinas generado a partir del .po.<br />
Expliquemos el proceso paso por paso.<br />
# Instalamos xlanguage y configuramos todos los idiomas en los que queremos que funcione nuestro blog. Mi recomendación es que usemos el [http://www.iso.org/iso/english_country_names_and_code_elements código ISO3166] para identificar a cada uno.<br />
# Tendremos que repasar todos nuestros plugins y el theme para identificar dónde se generan cadenas de texto y comprobar que se usa o la función _e() o _(). WordPress usa la librería de internacionalización (i18n) [http://es.wikipedia.org/wiki/Gettext gettext]. Si dentro de una cadena de texto aparece una variable, no podemos usar sin más ''_e(“Tenemos $num amigos”);'' pero sí ''printf((“Tenemos %d amigos.”), $num);''<br />
# Después de marcar todas las cadenas a traducir, ahora toca generar el .pot con ellas. Para ello, nos bajamos el script [http://svn.automattic.com/wordpress-i18n/tools/trunk/add-textdomain.php add-textdomain.php] de WordPress. Lo lanzamos de la siguiente manera:<br />
: <br />
: php add-textdomain.php -i domain phpfile.php<br />
El domain marca el ámbito de lo que traducimos. Podemos poner default, por ejemplo, para el theme y el nombre del plugin para cada uno de ellos. Luego generamos el .pot mediante [http://svn.automattic.com/wordpress-i18n/tools/trunk/makepot.php makepot.php]:<br />
: php makepot.php wp-theme el-directorio-del-theme languages/traduccion.pot<br />
En el caso de un plugin ponemos wp-plugin en vez de wp-theme. Para usar todas estas herramientas tenemos que tener el paquete gettext en nuestro servidor. <br />
# Para optener el .mo (fichero binario que entienden las máquinas) del .po (fichero con texto que entendemos las personas), lanzamos el siguiente conjuro desde bash:<br />
: <br />
: msgfmt fichero_idioma.pot -o fichero_idioma.mo<br />
# Ahora sólo falta que el theme sepa dónde encontrar esos ficheros .mo. Para ello usaremos el fichero de funciones de los themes de wordpress: ''functions.php''. Allí agregaremos lo siguiente, teniendo en cuenta que hemos dejado los ficheros .mo en la carpeta languages y que el domain del theme es default:<br />
<pre> <br />
function theme_init(){<br />
load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);<br />
}<br />
</pre><br />
Si además queremos traducir algún plugin:<br />
<pre><br />
function theme_init(){<br />
load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);<br />
//''Aquí ponemos el plugin cuyo domain es plugin1:<br />
load_theme_textdomain(‘plugin1′, get_template_directory() . ‘/languages/plugin1′);<br />
}<br />
</pre><br />
# Para introducir contenidos, en el título, las categorías y las etiquetas, se separa cada idioma con un carácter definido en la parte de administración de xlanguage. Por defecto se usa el carácter | (el pipe que está en la tecla del uno y la exclamación). Por ejemplo, publicaríamos “Etiketak|Etiquetas” para crear un contenido cuyo título en euskera sería Etiketak y Etiquetas en castellano (siempre se usa el orden de creación de los idiomas). En los contenidos, en el editor de WordPress tenemos unos botones para marcar el idioma de cada parte. Y si lo queremos manejar desde la parte html, sólo tendremos que marcarlo con la etiqueta ''<span lang=”idioma”></span>'' (una etiqueta [http://www.w3.org/TR/REC-html40/struct/dirlang.html estandarizada] por el W3C)<br />
===Enlaces de interés:=== <br />
* [http://codex.wordpress.org/I18n_for_WordPress_Developers Más información] sobre internalización y localización en WordPress.<br />
* [http://hellosam.net/lang/en/project/xlanguage/3 Cómo optimizar xlanguage para los buscadores].<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Gesti%C3%B3n_de_idiomas&diff=122Gestión de idiomas2010-09-25T16:21:16Z<p>Loretahur: </p>
<hr />
<div>Lo primero de todo, necesitamos un plugin que consiga gestionar correctamente ese sistema multi-idioma. Para ello, y tras probar unos cuantos, el vencedor ha sido [http://wordpress.org/extend/plugins/xlanguage/ xlanguage]. Las características que le hacen caballo ganador:<br />
* Se encarga de la administración de tantos idiomas como queramos manejar. Esa gestión afecta a los contenidos del blog (tanto posts como páginas estáticas), a las categorías, etiquetas, feeds, theme, etc, …<br />
* En el theme sólo será necesario contar con una carpeta donde almacenar los ficheros de idioma: un .mo con el nombre del idioma. Si tenemos plugins que generan contenidos, también podremos traducirlos y dejar aquí sus .mo.<br />
* Una funcionalidad muy interesante es que gestiona el cambio de idioma mediante cookies, así que si cambiamos el lenguaje que arranca por defecto, en próximas navegaciones recordará nuestra preferencia. También detecta el idioma del navegador, para mostrarnos directamente esa opción.<br />
* Por cada idioma genera una url diferente, lo que hace que los buscadores indexen los contenidos en todos los idiomas. Esa fue una de las razones por las que me decanté por xlanguage y no por [http://wordpress.org/extend/plugins/qtranslate/ qtranslate], que usa la misma dirección para todas las traducciones.<br />
¿Y cómo conseguimos traducir nuestro theme y nuestros plugins? Sencillo: todas las llamadas php que muestren cadenas de texto, tendrán que ir con la función _e() o bien con la función _() (la diferencia entre ambas es que _e hace un echo de la cadena. Es decir, ''echo (“Hola mundo”);'' es lo mismo que ''_e(“Hola Mundo”);'' ). De esta manera, con las [http://svn.automattic.com/wordpress-i18n/tools/trunk/ herramientas] que nos ofrece WordPress para la localización e internalización, podremos generar un .pot del theme donde introducir las traducciones pertinentes para luego generar el .mo que entenderá nuestro xlanguage.<br />
* '''.pot''': este fichero se genera de manera automática y recoge todas las cadenas de texto que aparecen en nuestro site. Por cada una de ellas, aparece justo debajo el espacio donde se debe dejar su traducción. Este es un ejemplo donde aparece primero el lugar en el que está dentro del código, la cadena en sí y el espacio donde se dejará la traducción correspondiente:<br />
<pre><br />
# presentacion.php:36<br />
msgid “Hello World”<br />
msgstr “”<br />
</pre><br />
* '''.po''': es el fichero .pot con las traducciones ya incluidas. Siguiendo el ejemplo anterior:<br />
<pre><br />
# presentacion.php:36<br />
msgid “Hello World”<br />
msgstr “Hola Mundo”<br />
</pre><br />
* '''.mo''': fichero binario que entienden las máquinas generado a partir del .po.<br />
Expliquemos el proceso paso por paso.<br />
# Instalamos xlanguage y configuramos todos los idiomas en los que queremos que funcione nuestro blog. Mi recomendación es que usemos el [http://www.iso.org/iso/english_country_names_and_code_elements código ISO3166] para identificar a cada uno.<br />
# Tendremos que repasar todos nuestros plugins y el theme para identificar dónde se generan cadenas de texto y comprobar que se usa o la función _e() o _(). WordPress usa la librería de internacionalización (i18n) [http://es.wikipedia.org/wiki/Gettext gettext]. Si dentro de una cadena de texto aparece una variable, no podemos usar sin más ''_e(“Tenemos $num amigos”);'' pero sí ''printf((“Tenemos %d amigos.”), $num);''<br />
# Después de marcar todas las cadenas a traducir, ahora toca generar el .pot con ellas. Para ello, nos bajamos el script [http://svn.automattic.com/wordpress-i18n/tools/trunk/add-textdomain.php add-textdomain.php] de WordPress. Lo lanzamos de la siguiente manera:<br />
: <br />
: php add-textdomain.php -i domain phpfile.php<br />
El domain marca el ámbito de lo que traducimos. Podemos poner default, por ejemplo, para el theme y el nombre del plugin para cada uno de ellos. Luego generamos el .pot mediante [http://svn.automattic.com/wordpress-i18n/tools/trunk/makepot.php makepot.php]:<br />
: php makepot.php wp-theme el-directorio-del-theme languages/traduccion.pot<br />
En el caso de un plugin ponemos wp-plugin en vez de wp-theme. Para usar todas estas herramientas tenemos que tener el paquete gettext en nuestro servidor. <br />
# Para optener el .mo (fichero binario que entienden las máquinas) del .po (fichero con texto que entendemos las personas), lanzamos el siguiente conjuro desde bash:<br />
: <br />
: msgfmt fichero_idioma.pot -o fichero_idioma.mo<br />
# Ahora sólo falta que el theme sepa dónde encontrar esos ficheros .mo. Para ello usaremos el fichero de funciones de los themes de wordpress: ''functions.php''. Allí agregaremos lo siguiente, teniendo en cuenta que hemos dejado los ficheros .mo en la carpeta languages y que el domain del theme es default:<br />
<pre> <br />
function theme_init(){<br />
load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);<br />
}<br />
</pre><br />
Si además queremos traducir algún plugin:<br />
<pre><br />
function theme_init(){<br />
load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);<br />
//''Aquí ponemos el plugin cuyo domain es plugin1:<br />
load_theme_textdomain(‘plugin1′, get_template_directory() . ‘/languages/plugin1′);<br />
}<br />
</pre><br />
# Para introducir contenidos, en el título, las categorías y las etiquetas, se separa cada idioma con un carácter definido en la parte de administración de xlanguage. Por defecto se usa el carácter | (el pipe que está en la tecla del uno y la exclamación). Por ejemplo, publicaríamos “Etiketak|Etiquetas” para crear un contenido cuyo título en euskera sería Etiketak y Etiquetas en castellano (siempre se usa el orden de creación de los idiomas). En los contenidos, en el editor de WordPress tenemos unos botones para marcar el idioma de cada parte. Y si lo queremos manejar desde la parte html, sólo tendremos que marcarlo con la etiqueta ''<span lang=”idioma”></span>'' (una etiqueta [http://www.w3.org/TR/REC-html40/struct/dirlang.html estandarizada] por el W3C)<br />
===Enlaces de interés:=== <br />
* [http://codex.wordpress.org/I18n_for_WordPress_Developers Más información] sobre internalización y localización en WordPress.<br />
* [http://hellosam.net/lang/en/project/xlanguage/3 Cómo optimizar xlanguage para los buscadores].</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Gesti%C3%B3n_de_idiomas&diff=121Gestión de idiomas2010-09-25T16:14:38Z<p>Loretahur: Página creada con 'Lo primero de todo, necesitamos un plugin que consiga gestionar correctamente ese sistema multi-idioma. Para ello, y tras probar unos cuantos, el vencedor ha sido [http://wordpr...'</p>
<hr />
<div>Lo primero de todo, necesitamos un plugin que consiga gestionar correctamente ese sistema multi-idioma. Para ello, y tras probar unos cuantos, el vencedor ha sido [http://wordpress.org/extend/plugins/xlanguage/ xlanguage]. Las características que le hacen caballo ganador:<br />
* Se encarga de la administración de tantos idiomas como queramos manejar. Esa gestión afecta a los contenidos del blog (tanto posts como páginas estáticas), a las categorías, etiquetas, feeds, theme, etc, …<br />
* En el theme sólo será necesario contar con una carpeta donde almacenar los ficheros de idioma: un .mo con el nombre del idioma. Si tenemos plugins que generan contenidos, también podremos traducirlos y dejar aquí sus .mo.<br />
* Una funcionalidad muy interesante es que gestiona el cambio de idioma mediante cookies, así que si cambiamos el lenguaje que arranca por defecto, en próximas navegaciones recordará nuestra preferencia. También detecta el idioma del navegador, para mostrarnos directamente esa opción.<br />
* Por cada idioma genera una url diferente, lo que hace que los buscadores indexen los contenidos en todos los idiomas. Esa fue una de las razones por las que me decanté por xlanguage y no por [http://wordpress.org/extend/plugins/qtranslate/ qtranslate], que usa la misma dirección para todas las traducciones.<br />
¿Y cómo conseguimos traducir nuestro theme y nuestros plugins? Sencillo: todas las llamadas php que muestren cadenas de texto, tendrán que ir con la función _e() o bien con la función <u>() (la diferencia entre ambas es que _e hace un echo de la cadena. Es decir, ''echo </u>(“Hola mundo”);'' es lo mismo que ''_e(“Hola Mundo”);'' ). De esta manera, con las [http://svn.automattic.com/wordpress-i18n/tools/trunk/ herramientas] que nos ofrece WordPress para la localización e internalización, podremos generar un .pot del theme donde introducir las traducciones pertinentes para luego generar el .mo que entenderá nuestro xlanguage.<br />
* '''.pot''': este fichero se genera de manera automática y recoge todas las cadenas de texto que aparecen en nuestro site. Por cada una de ellas, aparece justo debajo el espacio donde se debe dejar su traducción. Este es un ejemplo donde aparece primero el lugar en el que está dentro del código, la cadena en sí y el espacio donde se dejará la traducción correspondiente:<br />
: <br />
#: presentacion.php:36<br />
: msgid “Hello World”<br />
: msgstr “”<br />
* '''.po''': es el fichero .pot con las traducciones ya incluidas. Siguiendo el ejemplo anterior:<br />
: <br />
#: presentacion.php:36<br />
: msgid “Hello World”<br />
: msgstr “Hola Mundo”<br />
* '''.mo''': fichero binario que entienden las máquinas generado a partir del .po.<br />
Expliquemos el proceso paso por paso.<br />
# Instalamos xlanguage y configuramos todos los idiomas en los que queremos que funcione nuestro blog. Mi recomendación es que usemos el [http://www.iso.org/iso/english_country_names_and_code_elements código ISO3166] para identificar a cada uno.<br />
# Tendremos que repasar todos nuestros plugins y el theme para identificar dónde se generan cadenas de texto y comprobar que se usa o la función _e() o <u>(). WordPress usa la librería de internacionalización (i18n) [http://es.wikipedia.org/wiki/Gettext gettext]. Si dentro de una cadena de texto aparece una variable, no podemos usar sin más ''_e(“Tenemos $num amigos”);'' pero sí ''printf(</u>(“Tenemos %d amigos.”), $num);''<br />
# Después de marcar todas las cadenas a traducir, ahora toca generar el .pot con ellas. Para ello, nos bajamos el script [http://svn.automattic.com/wordpress-i18n/tools/trunk/add-textdomain.php add-textdomain.php] de WordPress. Lo lanzamos de la siguiente manera:<br />
: <br />
: php add-textdomain.php -i domain phpfile.php<br />
El domain marca el ámbito de lo que traducimos. Podemos poner default, por ejemplo, para el theme y el nombre del plugin para cada uno de ellos. Luego generamos el .pot mediante [http://svn.automattic.com/wordpress-i18n/tools/trunk/makepot.php makepot.php]:<br />
: php makepot.php wp-theme el-directorio-del-theme languages/traduccion.pot<br />
En el caso de un plugin ponemos wp-plugin en vez de wp-theme. Para usar todas estas herramientas tenemos que tener el paquete gettext en nuestro servidor. <br />
# Para optener el .mo (fichero binario que entienden las máquinas) del .po (fichero con texto que entendemos las personas), lanzamos el siguiente conjuro desde bash:<br />
: <br />
: msgfmt fichero_idioma.pot -o fichero_idioma.mo<br />
# Ahora sólo falta que el theme sepa dónde encontrar esos ficheros .mo. Para ello usaremos el fichero de funciones de los themes de wordpress: ''functions.php''. Allí agregaremos lo siguiente, teniendo en cuenta que hemos dejado los ficheros .mo en la carpeta languages y que el domain del theme es default:<br />
: <br />
function theme_init(){<br />
: load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);<br />
: }<br />
Si además queremos traducir algún plugin:<br />
function theme_init(){<br />
: load_theme_textdomain(‘default’, get_template_directory() . ‘/languages’);<br />
: ''Aquí ponemos el plugin cuyo domain es plugin1:<br />
: load_theme_textdomain(‘plugin1′, get_template_directory() . ‘/languages/plugin1′);<br />
: }<br />
# Para introducir contenidos, en el título, las categorías y las etiquetas, se separa cada idioma con un carácter definido en la parte de administración de xlanguage. Por defecto se usa el carácter | (el pipe que está en la tecla del uno y la exclamación). Por ejemplo, publicaríamos “Etiketak|Etiquetas” para crear un contenido cuyo título en euskera sería Etiketak y Etiquetas en castellano (siempre se usa el orden de creación de los idiomas). En los contenidos, en el editor de WordPress tenemos unos botones para marcar el idioma de cada parte. Y si lo queremos manejar desde la parte html, sólo tendremos que marcarlo con la etiqueta ''<span lang=”idioma”></span>'' (una etiqueta [http://www.w3.org/TR/REC-html40/struct/dirlang.html estandarizada] por el W3C)<br />
===Enlaces de interés:=== <br />
* [http://codex.wordpress.org/I18n_for_WordPress_Developers Más información] sobre internalización y localización en WordPress.<br />
* [http://hellosam.net/lang/en/project/xlanguage/3 Cómo optimizar xlanguage para los buscadores].</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Wp-config.php&diff=120Wp-config.php2010-09-25T16:09:59Z<p>Loretahur: </p>
<hr />
<div>En este fichero se pueden definir muchas de las opciones de WordPress. No existe en la carpeta de descarga de WordPress (antes de la instalación). Sin embargo, tras la instalación se genera con algunos datos básicos (host, nombre, usuario y contraseña de la base de datos, ...). Es por esto que debe tener los permisos mínimos de acceso de lectura.<br />
<br />
Otras opciones a configurar desde aquí:<br />
* '''WP_HOME''': para indicar a WP otra url en la que tiene que funcionar.<br />
* '''WP_SITEURL''': para indicar a WP otra url sobre la que tiene que funcionar. Aquí se indica la dirección de administración (normalmente coinciden tanto WP_HOME y WP_SITEURL).<br />
En el siguiente ejemplo vemos como un blog puede funcionar con varias url's diferentes de la de la propia instalación:<br />
<pre><br />
$hostname = $_SERVER['SERVER_NAME'];<br />
$hostname = str_replace('www.', '', $hostname);<br />
if($hostname == 'ejemplo.com') {<br />
define('WP_SITEURL', 'http://www.ejemplo.com/blog');<br />
define('WP_HOME', 'http://www.ejemplo.com/blog');<br />
}else if($hostname == 'ejemplo.es') {<br />
define('WP_SITEURL', 'http://www.ejemplo.es/blog');<br />
define('WP_HOME', 'http://www.ejemplo.es/blog');<br />
}<br />
</pre><br />
* '''WP_CONTENT_DIR''': podemos mover la carpeta wp-content e indicar aquí su nueva ruta física.<br />
<pre><br />
define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );<br />
</pre><br />
* '''WP_CONTENT_URL''': podemos mover la carpeta wp-content e indicar aquí su nueva URI.<br />
<pre><br />
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');<br />
</pre><br />
* '''WP_CACHE''': si se pone a true, se habilita el script <tt>wp-content/advanced-cache.php.</tt><br />
<pre><br />
define('WP_CACHE', true);<br />
</pre><br />
* '''WPLANG''': se define el idioma de la parte de administración del blog. Para ello, previamente tenemos que tener el .mo del idioma en la carpeta languages y poner aquí el nombre del mismo. Por ejemplo, si tenemos un es_ES.mo:<br />
<pre><br />
define('WPLANG', 'es_ES');<br />
</pre><br />
* Security Keys: '''AUTH_KEY''', '''SECURE_AUTH_KEY''', '''LOGGED_IN_KEY,''' '''NONCE_KEY:''' para mejorar la encriptación de las cookies de usuario. Se generan de forma aleatoria [http://api.wordpress.org/secret-key/1.1/ aquí].<br />
* '''SECRET_KEY''': se especifica una passfrase que mejora la encriptación del password de usuarios. Se genera de forma aleatoria [http://api.wordpress.org/secret-key/1.0/ aquí].<br />
* '''WP_ALLOW_REPAIR''': podemos agregar esta variable para permitir que la base de datos se optimice de forma automática.<br />
<pre><br />
define('WP_ALLOW_REPAIR', true);<br />
</pre><br />
* '''WP_MEMORY_LIMIT''': Aumenta el tamaño de la memoria que Wordpress usará y que por defecto es de sólo 32M, muy poco en cuanto que usas una docena de plugins. Debe de ir acompañada de la directiva adecuada en el init de php que, de ser inferior a estos 64M, anularía el efecto.<br />
<pre><br />
define('WP_MEMORY_LIMIT', '64M');<br />
</pre><br />
* '''WP_POST_REVISIONS''': Desactiva el mecanismo de autoguardado de versiones de wordpress si quieres conservar unas bases de datos más pequeñas.<br />
<pre><br />
define('WP_POST_REVISIONS', false);<br />
</pre><br />
En vez de desactivarlo, se puede limitar a un número máximo de revisiones:<br />
<pre><br />
define('WP_POST_REVISIONS', 3); // limita<br />
</pre><br />
* '''WP_ALLOW_MULTISITE''': Activar en Wordpress 3.0 la opción multi-site.<br />
<pre><br />
define(‘WP_ALLOW_MULTISITE’, true);<br />
</pre><br />
<br />
Más información, en la página de [http://codex.wordpress.org/Editing_wp-config.php Codex WP]<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=MediaWiki:Sidebar&diff=119MediaWiki:Sidebar2010-09-25T16:08:44Z<p>Loretahur: </p>
<hr />
<div>* WordPress<br />
** introduccion|Introducción<br />
** wp-config.php|wp-config.php<br />
** plugins|Plugins<br />
** themes|Themes<br />
* Biblioteca 2.0<br />
** biblioteca 2.0|Biblioteca 2.0</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Wp-config.php&diff=118Wp-config.php2010-09-25T16:07:37Z<p>Loretahur: /* wp-config.php */</p>
<hr />
<div>En este fichero se pueden definir muchas de las opciones de WordPress. No existe en la carpeta de descarga de WordPress (antes de la instalación). Sin embargo, tras la instalación se genera con algunos datos básicos (host, nombre, usuario y contraseña de la base de datos, ...). Es por esto que debe tener los permisos mínimos de acceso de lectura.<br />
<br />
Otras opciones a configurar desde aquí:<br />
* '''WP_HOME''': para indicar a WP otra url en la que tiene que funcionar.<br />
* '''WP_SITEURL''': para indicar a WP otra url sobre la que tiene que funcionar. Aquí se indica la dirección de administración (normalmente coinciden tanto WP_HOME y WP_SITEURL).<br />
En el siguiente ejemplo vemos como un blog puede funcionar con varias url's diferentes de la de la propia instalación:<br />
<pre><br />
$hostname = $_SERVER['SERVER_NAME'];<br />
$hostname = str_replace('www.', '', $hostname);<br />
if($hostname == 'ejemplo.com') {<br />
define('WP_SITEURL', 'http://www.ejemplo.com/blog');<br />
define('WP_HOME', 'http://www.ejemplo.com/blog');<br />
}else if($hostname == 'ejemplo.es') {<br />
define('WP_SITEURL', 'http://www.ejemplo.es/blog');<br />
define('WP_HOME', 'http://www.ejemplo.es/blog');<br />
}<br />
</pre><br />
* '''WP_CONTENT_DIR''': podemos mover la carpeta wp-content e indicar aquí su nueva ruta física.<br />
<pre><br />
define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );<br />
</pre><br />
* '''WP_CONTENT_URL''': podemos mover la carpeta wp-content e indicar aquí su nueva URI.<br />
<pre><br />
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');<br />
</pre><br />
* '''WP_CACHE''': si se pone a true, se habilita el script <tt>wp-content/advanced-cache.php.</tt><br />
<pre><br />
define('WP_CACHE', true);<br />
</pre><br />
* '''WPLANG''': se define el idioma de la parte de administración del blog. Para ello, previamente tenemos que tener el .mo del idioma en la carpeta languages y poner aquí el nombre del mismo. Por ejemplo, si tenemos un es_ES.mo:<br />
<pre><br />
define('WPLANG', 'es_ES');<br />
</pre><br />
* Security Keys: '''AUTH_KEY''', '''SECURE_AUTH_KEY''', '''LOGGED_IN_KEY,''' '''NONCE_KEY:''' para mejorar la encriptación de las cookies de usuario. Se generan de forma aleatoria [http://api.wordpress.org/secret-key/1.1/ aquí].<br />
* '''SECRET_KEY''': se especifica una passfrase que mejora la encriptación del password de usuarios. Se genera de forma aleatoria [http://api.wordpress.org/secret-key/1.0/ aquí].<br />
* '''WP_ALLOW_REPAIR''': podemos agregar esta variable para permitir que la base de datos se optimice de forma automática.<br />
<pre><br />
define('WP_ALLOW_REPAIR', true);<br />
</pre><br />
* '''WP_MEMORY_LIMIT''': Aumenta el tamaño de la memoria que Wordpress usará y que por defecto es de sólo 32M, muy poco en cuanto que usas una docena de plugins. Debe de ir acompañada de la directiva adecuada en el init de php que, de ser inferior a estos 64M, anularía el efecto.<br />
<pre><br />
define('WP_MEMORY_LIMIT', '64M');<br />
</pre><br />
* '''WP_POST_REVISIONS''': Desactiva el mecanismo de autoguardado de versiones de wordpress si quieres conservar unas bases de datos más pequeñas.<br />
<pre><br />
define('WP_POST_REVISIONS', false);<br />
</pre><br />
En vez de desactivarlo, se puede limitar a un número máximo de revisiones:<br />
<pre><br />
define('WP_POST_REVISIONS', 3); // limita<br />
</pre><br />
* '''WP_ALLOW_MULTISITE''': Activar en Wordpress 3.0 la opción multi-site.<br />
<pre><br />
define(‘WP_ALLOW_MULTISITE’, true);<br />
</pre><br />
<br />
Más información, en la página de [http://codex.wordpress.org/Editing_wp-config.php Codex WP]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Wp-config.php&diff=117Wp-config.php2010-09-25T16:06:19Z<p>Loretahur: Página creada con '=wp-config.php= En este fichero se pueden definir muchas de las opciones de WordPress. No existe en la carpeta de descarga de WordPress (antes de la instalación). Sin embargo,...'</p>
<hr />
<div>=wp-config.php= <br />
En este fichero se pueden definir muchas de las opciones de WordPress. No existe en la carpeta de descarga de WordPress (antes de la instalación). Sin embargo, tras la instalación se genera con algunos datos básicos (host, nombre, usuario y contraseña de la base de datos, ...). Es por esto que debe tener los permisos mínimos de acceso de lectura.<br />
<br />
Otras opciones a configurar desde aquí:<br />
* '''WP_HOME''': para indicar a WP otra url en la que tiene que funcionar.<br />
* '''WP_SITEURL''': para indicar a WP otra url sobre la que tiene que funcionar. Aquí se indica la dirección de administración (normalmente coinciden tanto WP_HOME y WP_SITEURL).<br />
En el siguiente ejemplo vemos como un blog puede funcionar con varias url's diferentes de la de la propia instalación:<br />
<pre><br />
$hostname = $_SERVER['SERVER_NAME'];<br />
$hostname = str_replace('www.', '', $hostname);<br />
if($hostname == 'ejemplo.com') {<br />
define('WP_SITEURL', 'http://www.ejemplo.com/blog');<br />
define('WP_HOME', 'http://www.ejemplo.com/blog');<br />
}else if($hostname == 'ejemplo.es') {<br />
define('WP_SITEURL', 'http://www.ejemplo.es/blog');<br />
define('WP_HOME', 'http://www.ejemplo.es/blog');<br />
}<br />
</pre><br />
* '''WP_CONTENT_DIR''': podemos mover la carpeta wp-content e indicar aquí su nueva ruta física.<br />
<pre><br />
define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' );<br />
</pre><br />
* '''WP_CONTENT_URL''': podemos mover la carpeta wp-content e indicar aquí su nueva URI.<br />
<pre><br />
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');<br />
</pre><br />
* '''WP_CACHE''': si se pone a true, se habilita el script <tt>wp-content/advanced-cache.php.</tt><br />
<pre><br />
define('WP_CACHE', true);<br />
</pre><br />
* '''WPLANG''': se define el idioma de la parte de administración del blog. Para ello, previamente tenemos que tener el .mo del idioma en la carpeta languages y poner aquí el nombre del mismo. Por ejemplo, si tenemos un es_ES.mo:<br />
<pre><br />
define('WPLANG', 'es_ES');<br />
</pre><br />
* Security Keys: '''AUTH_KEY''', '''SECURE_AUTH_KEY''', '''LOGGED_IN_KEY,''' '''NONCE_KEY:''' para mejorar la encriptación de las cookies de usuario. Se generan de forma aleatoria [http://api.wordpress.org/secret-key/1.1/ aquí].<br />
* '''SECRET_KEY''': se especifica una passfrase que mejora la encriptación del password de usuarios. Se genera de forma aleatoria [http://api.wordpress.org/secret-key/1.0/ aquí].<br />
* '''WP_ALLOW_REPAIR''': podemos agregar esta variable para permitir que la base de datos se optimice de forma automática.<br />
<pre><br />
define('WP_ALLOW_REPAIR', true);<br />
</pre><br />
* '''WP_MEMORY_LIMIT''': Aumenta el tamaño de la memoria que Wordpress usará y que por defecto es de sólo 32M, muy poco en cuanto que usas una docena de plugins. Debe de ir acompañada de la directiva adecuada en el init de php que, de ser inferior a estos 64M, anularía el efecto.<br />
<pre><br />
define('WP_MEMORY_LIMIT', '64M');<br />
</pre><br />
* '''WP_POST_REVISIONS''': Desactiva el mecanismo de autoguardado de versiones de wordpress si quieres conservar unas bases de datos más pequeñas.<br />
<pre><br />
define('WP_POST_REVISIONS', false);<br />
</pre><br />
En vez de desactivarlo, se puede limitar a un número máximo de revisiones:<br />
<pre><br />
define('WP_POST_REVISIONS', 3); // limita<br />
</pre><br />
* '''WP_ALLOW_MULTISITE''': Activar en Wordpress 3.0 la opción multi-site.<br />
<pre><br />
define(‘WP_ALLOW_MULTISITE’, true);<br />
</pre><br />
<br />
Más información, en la página de [http://codex.wordpress.org/Editing_wp-config.php Codex WP]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=116Introduccion2010-09-25T16:04:57Z<p>Loretahur: /* Instalación */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''[[wp-config.php]]''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Themes&diff=115Themes2010-09-25T15:37:00Z<p>Loretahur: /* Panel de administración */</p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas:<br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12.<br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas.<br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right]]<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress.<br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda.<br />
*'''search.php''': página donde se muestran los resultados de una búsqueda.<br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web.<br />
<br />
==Sidebars==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
Para usarlas posteriormente, la llamada será de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Barra Lateral Izquierda') ) : <br />
echo "El usuario no ha puesto widgets en esta barra";<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
<br />
== Cabeceras y Footers personalizados ==<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('Cine')) {<br />
get_footer('Cine');<br />
} else {<br />
get_footer();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''):<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('cine')) {<br />
get_header('cine');<br />
} else {<br />
get_header();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios).<br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos.<br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga:<br />
<br />
[[Archivo:Template Hierarchy.png]]<br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''.<br />
<br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
/* <br />
Template Name: Nombre-plantilla <br />
*/<br />
</syntaxhighlight><br />
<br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca:<br />
* Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración).<br />
* Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
get_header();<br />
if (have_posts()) :<br />
while (have_posts()) : the_post();<br />
the_content();<br />
endwhile;<br />
endif;<br />
get_sidebar();<br />
get_footer(); <br />
?><br />
</syntaxhighlight><br />
<br />
<br />
* '''wp_query->current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (have_posts()) : <br />
while (have_posts()) : the_post(); <br />
if ($wp_query->current_post < 3) {<br />
the_content();<br />
} <br />
else {<br />
the_title();<br />
}<br />
endwhile;<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos:<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id.<br />
*'''author=ID''': filtra por usuario, usando el ID del mismo.<br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente.<br />
*'''year=año''': filtra por año.<br />
*'''monthnum=mes''': filtra por mes.<br />
*'''day=día''': filtra por día.<br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
query_posts('posts_per_page=5&author=3&tag=discos');<br />
<br />
//The Loop<br />
if ( have_posts() ) : while ( have_posts() ) : the_post();<br />
..<br />
endwhile; else:<br />
..<br />
endif;<br />
<br />
//Reset Query<br />
wp_reset_query(); ?><br />
</syntaxhighlight><br />
<br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''.<br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post.<br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()].<br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if(!empty($post->post_excerpt)) {<br />
// Si tiene extracto, lo muestra<br />
the_excerpt();<br />
} else {<br />
// Si no, muestra el contenido del post<br />
the_content();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha:<br />
**l = Nombre completo del día de la semana.<br />
**F = Nombre completo para el mes.<br />
**j = Día numérico.<br />
**m = Mes con dos dígitos.<br />
**Y = Año con cuatro dígitos.<br />
**y = Año con dos dígitos.<br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_time('l, j \d\e F, Y'); //Nos muestra Martes, 14 de Septiembre, 2010 ?> <br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día.<br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]):<br />
**bloginfo('name'): muestra por pantalla el nombre del blog.<br />
**bloginfo('description'): muestra por pantalla el nombre del blog.<br />
**bloginfo('url'): muestra por pantalla la dirección del blog.<br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css).<br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme.<br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author].<br />
* [http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_tags('Etiquetas:', ' - ', '<br />'); ?><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca. <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<div class="navigation"><br />
<div class="alignleft"><?php previous_posts_link('','','&laquo; Artículos Anteriores')?></div><br />
<div class="alignright"><?php next_posts_link('','Artículos Siguientes &raquo;','')?></div><br />
</div><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (in_category('3') ){ ?><br />
<img src='/images/plant.png' alt='a plant' /><br />
<?php } elseif (in_category('4') ){ ?><br />
<img src='/images/flower.png' alt='a pretty flower' /><br />
<?php } ?><br />
</syntaxhighlight><br />
<br />
==Custom fields - Campos personalizados==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor:<br />
<br />
[[Archivo:Campos-personalizados.jpg]]<br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_custom_values("nombre-del-custom-field"); ?><br />
</syntaxhighlight><br />
<br />
<br />
O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_meta($post->ID, nombre-del-custom-field); ?><br />
</syntaxhighlight><br />
<br />
<br />
Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc...<br />
<br />
==Panel de administración ==<br />
<br />
Incluyendo el siguiente texto en functions.php podemos eliminar secciones del menú de administración.<br />
*Apartados de primer nivel como "''Posts''", "''Media''", "''Appearance''" y "''Tools''":<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
function remove_menu_items() {<br />
global $menu;<br />
$restricted = array(__('Links'), __('Comments'), __('Media'),<br />
__('Plugins'), __('Tools'), __('Users'));<br />
end ($menu);<br />
while (prev($menu)){<br />
$value = explode(' ',$menu[key($menu)][0]);<br />
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){<br />
unset($menu[key($menu)]);}<br />
}<br />
}<br />
<br />
add_action('admin_menu', 'remove_menu_items');<br />
</syntaxhighlight><br />
<br />
<br />
*Para submenús de segundo nivel, por ejemplo "''Theme''" que está bajo "''Appearance''":<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
function remove_submenus() {<br />
global $submenu;<br />
unset($submenu['index.php'][10]); // Removes 'Updates'.<br />
unset($submenu['themes.php'][5]); // Removes 'Themes'.<br />
unset($submenu['options-general.php'][15]); // Removes 'Writing'.<br />
unset($submenu['options-general.php'][25]); // Removes 'Discussion'.<br />
unset($submenu['edit.php'][16]); // Removes 'Tags'. <br />
}<br />
<br />
add_action('admin_menu', 'remove_submenus');<br />
</syntaxhighlight><br />
<br />
<br />
Para saber el nombre de los submenús, podemos ir a ''wp-admin/menu.php'' y buscar el item que queremos deshabilitar.<br />
<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics):<br />
<br />
<syntaxhighlight lang="php"><br />
/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?><br />
<form method="post" name="update_form" target="_self"><br />
<h1>Google Analytics</h1><br />
<table class="form-table"><br />
<tr><br />
<th>Google Analytics:</th><br />
<td><textarea name="google_analytics" style="width: 95%;" rows="10" /><br />
<?php echo get_option('google_analytics'); ?></textarea><br />Copia el código Google Analytics aquí.</td><br />
</tr><br />
</table><br />
<p class="submit" id="jump_submit"><br />
<input name="submitted" type="hidden" value="yes" /><br />
<input type="submit" name="Submit" value="Save Changes" /><br />
</form><br />
<?php <br />
}<br />
function nombredeltheme_options() {<br />
add_menu_page('Opciones del Theme', __('Opciones del Theme', 'default'), 'edit_themes', __FILE__, 'nombredeltheme_theme');<br />
}<br />
add_action('admin_menu', 'nombredeltheme_options');<br />
</syntaxhighlight><br />
<br />
<br />
Luego ponemos en el footer.php:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php echo get_option('google_analytics'); ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración.<br />
<br />
==Enlaces de interés==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.<br />
<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Themes&diff=114Themes2010-09-25T15:35:37Z<p>Loretahur: /* Panel de administración del theme */</p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas:<br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12.<br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas.<br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right]]<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress.<br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda.<br />
*'''search.php''': página donde se muestran los resultados de una búsqueda.<br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web.<br />
<br />
==Sidebars==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
Para usarlas posteriormente, la llamada será de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Barra Lateral Izquierda') ) : <br />
echo "El usuario no ha puesto widgets en esta barra";<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
<br />
== Cabeceras y Footers personalizados ==<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('Cine')) {<br />
get_footer('Cine');<br />
} else {<br />
get_footer();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''):<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('cine')) {<br />
get_header('cine');<br />
} else {<br />
get_header();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios).<br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos.<br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga:<br />
<br />
[[Archivo:Template Hierarchy.png]]<br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''.<br />
<br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
/* <br />
Template Name: Nombre-plantilla <br />
*/<br />
</syntaxhighlight><br />
<br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca:<br />
* Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración).<br />
* Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
get_header();<br />
if (have_posts()) :<br />
while (have_posts()) : the_post();<br />
the_content();<br />
endwhile;<br />
endif;<br />
get_sidebar();<br />
get_footer(); <br />
?><br />
</syntaxhighlight><br />
<br />
<br />
* '''wp_query->current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (have_posts()) : <br />
while (have_posts()) : the_post(); <br />
if ($wp_query->current_post < 3) {<br />
the_content();<br />
} <br />
else {<br />
the_title();<br />
}<br />
endwhile;<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos:<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id.<br />
*'''author=ID''': filtra por usuario, usando el ID del mismo.<br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente.<br />
*'''year=año''': filtra por año.<br />
*'''monthnum=mes''': filtra por mes.<br />
*'''day=día''': filtra por día.<br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
query_posts('posts_per_page=5&author=3&tag=discos');<br />
<br />
//The Loop<br />
if ( have_posts() ) : while ( have_posts() ) : the_post();<br />
..<br />
endwhile; else:<br />
..<br />
endif;<br />
<br />
//Reset Query<br />
wp_reset_query(); ?><br />
</syntaxhighlight><br />
<br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''.<br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post.<br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()].<br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if(!empty($post->post_excerpt)) {<br />
// Si tiene extracto, lo muestra<br />
the_excerpt();<br />
} else {<br />
// Si no, muestra el contenido del post<br />
the_content();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha:<br />
**l = Nombre completo del día de la semana.<br />
**F = Nombre completo para el mes.<br />
**j = Día numérico.<br />
**m = Mes con dos dígitos.<br />
**Y = Año con cuatro dígitos.<br />
**y = Año con dos dígitos.<br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_time('l, j \d\e F, Y'); //Nos muestra Martes, 14 de Septiembre, 2010 ?> <br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día.<br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]):<br />
**bloginfo('name'): muestra por pantalla el nombre del blog.<br />
**bloginfo('description'): muestra por pantalla el nombre del blog.<br />
**bloginfo('url'): muestra por pantalla la dirección del blog.<br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css).<br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme.<br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author].<br />
* [http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_tags('Etiquetas:', ' - ', '<br />'); ?><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca. <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<div class="navigation"><br />
<div class="alignleft"><?php previous_posts_link('','','&laquo; Artículos Anteriores')?></div><br />
<div class="alignright"><?php next_posts_link('','Artículos Siguientes &raquo;','')?></div><br />
</div><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (in_category('3') ){ ?><br />
<img src='/images/plant.png' alt='a plant' /><br />
<?php } elseif (in_category('4') ){ ?><br />
<img src='/images/flower.png' alt='a pretty flower' /><br />
<?php } ?><br />
</syntaxhighlight><br />
<br />
==Custom fields - Campos personalizados==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor:<br />
<br />
[[Archivo:Campos-personalizados.jpg]]<br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_custom_values("nombre-del-custom-field"); ?><br />
</syntaxhighlight><br />
<br />
<br />
O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_meta($post->ID, nombre-del-custom-field); ?><br />
</syntaxhighlight><br />
<br />
<br />
Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc...<br />
<br />
==Panel de administración ==<br />
<br />
Incluyendo el siguiente texto en functions.php podemos eliminar secciones del menú de administración.<br />
*Apartados de primer nivel como "''Posts''", "''Media''", "''Appearance''" y "''Tools''":<br />
<br />
<syntaxhighlight lang="php"><br />
function remove_menu_items() {<br />
global $menu;<br />
$restricted = array(__('Links'), __('Comments'), __('Media'),<br />
__('Plugins'), __('Tools'), __('Users'));<br />
end ($menu);<br />
while (prev($menu)){<br />
$value = explode(' ',$menu[key($menu)][0]);<br />
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){<br />
unset($menu[key($menu)]);}<br />
}<br />
}<br />
<br />
add_action('admin_menu', 'remove_menu_items');<br />
</syntaxhighlight><br />
<br />
*Para submenús de segundo nivel, por ejemplo "''Theme''" que está bajo "''Appearance''":<br />
<syntaxhighlight lang="php"><br />
function remove_submenus() {<br />
global $submenu;<br />
unset($submenu['index.php'][10]); // Removes 'Updates'.<br />
unset($submenu['themes.php'][5]); // Removes 'Themes'.<br />
unset($submenu['options-general.php'][15]); // Removes 'Writing'.<br />
unset($submenu['options-general.php'][25]); // Removes 'Discussion'.<br />
unset($submenu['edit.php'][16]); // Removes 'Tags'. <br />
}<br />
<br />
add_action('admin_menu', 'remove_submenus');<br />
</syntaxhighlight><br />
<br />
Para saber el nombre de los submenús, podemos ir a ''wp-admin/menu.php'' y buscar el item que queremos deshabilitar.<br />
<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics):<br />
<br />
<syntaxhighlight lang="php"><br />
/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?><br />
<form method="post" name="update_form" target="_self"><br />
<h1>Google Analytics</h1><br />
<table class="form-table"><br />
<tr><br />
<th>Google Analytics:</th><br />
<td><textarea name="google_analytics" style="width: 95%;" rows="10" /><br />
<?php echo get_option('google_analytics'); ?></textarea><br />Copia el código Google Analytics aquí.</td><br />
</tr><br />
</table><br />
<p class="submit" id="jump_submit"><br />
<input name="submitted" type="hidden" value="yes" /><br />
<input type="submit" name="Submit" value="Save Changes" /><br />
</form><br />
<?php <br />
}<br />
function nombredeltheme_options() {<br />
add_menu_page('Opciones del Theme', __('Opciones del Theme', 'default'), 'edit_themes', __FILE__, 'nombredeltheme_theme');<br />
}<br />
add_action('admin_menu', 'nombredeltheme_options');<br />
</syntaxhighlight><br />
<br />
<br />
Luego ponemos en el footer.php:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php echo get_option('google_analytics'); ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración.<br />
<br />
==Enlaces de interés==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.<br />
<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Plugins&diff=113Plugins2010-09-25T10:49:02Z<p>Loretahur: </p>
<hr />
<div>* [http://wordpress.org/extend/plugins/akismet/ Akismet]: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* [http://wordpress.org/extend/plugins/contact-form-7/ Contact Form 7]: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* [http://wordpress.org/extend/plugins/xlanguage/ xlanguage]: si queremos tener nuestro site en varios idiomas.<br />
* [http://wordpress.org/extend/plugins/all-in-one-seo-pack/ All in One SEO Pack]: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es [http://wordpress.org/extend/plugins/google-sitemap-generator/ Google XML Sitemaps], que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... [http://wordpress.org/extend/plugins/sociable/ Sociable] es nuestro plugin.<br />
* [http://wordpress.org/extend/plugins/subscribe-to-comments/ Subscribe To Comments]: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* [http://gic.deusto.es/index.php/Members_Only Members Only]: permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* [http://wordpress.org/extend/plugins/wpdirauth/ wpDirAuth]: si queremos que los usuarios del site se validen contra un LDAP.<br />
* [http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/ Yet Another Related Posts]: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la [http://ayudawordpress.com/tu-propio-logo-en-la-pantalla-de-acceso/ pantalla de login] y en la zona de [http://ayudawordpress.com/tu-propio-logo-en-la-cabecera-del-escritorio/ administración].<br />
* [http://webjawns.com/tpc-memory-usage-for-wordpress/ WP memory usage control]: para controlar la memoria empleada por WP.<br />
*[http://www.viper007bond.com/wordpress-plugins/vipers-video-quicktags/ Viper’s Video Quicktags]: añade al editor de posts los botones para escribir el código de inserción de vídeos de YouTube, Vimeo, DailyMotion, Veoh y Blip.tv. Además los códigos que genera validan HTML. <br />
*[http://wordpress.org/extend/plugins/as-pdf/ AS-PDF]: genera un fichero pdf para cada post o página que publiques.<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=112Introduccion2010-09-25T10:44:18Z<p>Loretahur: /* Plugins */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. [[Plugins|Aquí]] iremos recogiendo algunos de los más interesantes.<br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=111Introduccion2010-09-25T10:42:26Z<p>Loretahur: /* Themes */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear la nuestra. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=110Introduccion2010-09-25T10:41:56Z<p>Loretahur: /* Themes */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos [http://wordpress.org/extend/themes/ miles de plantillas] para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado ''Apariencia --&gt; Widgets''). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
[[Themes|Más información]] sobre los themes.<br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=109Introduccion2010-09-25T10:37:09Z<p>Loretahur: /* Otros */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [[Gestión de idiomas]]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Archivo:Emot.bmp&diff=108Archivo:Emot.bmp2010-09-25T10:36:39Z<p>Loretahur: </p>
<hr />
<div></div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=107Introduccion2010-09-25T10:35:00Z<p>Loretahur: /* Otros */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos:<br />
[[Image:emot.bmp]]<br />
* [Gestión de idiomas]<br />
* Cómo hacer '''backup''' de los datos: Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de "''Herramientas''" de la columna lateral de configuración. Hay que pinchar en el botón "''Descargar el archivo de exportación''", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br><br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=106Introduccion2010-09-25T10:33:08Z<p>Loretahur: /* Enlaces de interés */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* [http://wordpress.org/extend/plugins/ Directorio de plugins]<br />
* [http://wordpress.org/extend/themes/ Directorio de themes]<br />
* [http://codex.wordpress.org/ WordPress Codex], el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=105Introduccion2010-09-25T10:31:37Z<p>Loretahur: /* Configuración */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una [http://api.wordpress.org/secret-key/1.0/ SECRET_KEY] y unas [http://api.wordpress.org/secret-key/1.1/ Security Keys] y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En ''Opciones --&gt; Discusión'' dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=104Introduccion2010-09-25T10:30:12Z<p>Loretahur: /* Instalación */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br>&nbsp;&nbsp;&nbsp;* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br>&nbsp;&nbsp;&nbsp;* '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br>&nbsp;&nbsp;&nbsp;*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br><syntaxhighlight lang="bash"><br />
chown -R www-data:www-data blog<br />
</syntaxhighlight><br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos <br><syntaxhighlight lang="bash">mysqladmin -u root -p create nombrebd</syntaxhighlight><br />
#Creamos un usuario con permisos para esa BD: <br><syntaxhighlight lang="sql">$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';</syntaxhighlight><br><syntaxhighlight lang="sql">$ flush privileges;</syntaxhighlight><br />
#Lanzamos desde el navegador la instalación '''¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad''' <br />
#Quitamos permisos al fichero wp-config.php <br><syntaxhighlight lang="bash">chmod o-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod o-r wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-w wp-config.php</syntaxhighlight><br><syntaxhighlight lang="bash">chmod g-r wp-config.php</syntaxhighlight><br />
#Borramos los siguientes ficheros: <br>1. wp-config-sample.php<br>2. wp-admin/upgrade.php<br>3. wp-admin/install.php<br>4. wp-admin/installer-helper.php <br>Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=103Introduccion2010-09-25T10:13:56Z<p>Loretahur: /* Instalación */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
#Bajamos el paquete de [http://es.wordpress.org/ Wordpress en castellano] <br />
#Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:'''<br>'''* '''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br> * '''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br> *&nbsp;'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde ''Opciones --&gt; Misceláneas'').<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). 3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * '''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br> <br />
#Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):chown -R www-data:www-data blog<br> <br />
#Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altosmysqladmin -u root -p create nombrebd<br> <br />
#Creamos un usuario con permisos para esa BD:$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges;<br> <br />
#Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad 2. Quitamos permisos al fichero wp-config.phpchmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php<br> <br />
#Borramos los siguientes ficheros: 1. wp-config-sample.php 2. wp-admin/upgrade.php 3. wp-admin/install.php 4. wp-admin/installer-helper.php Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br><br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=102Introduccion2010-09-24T23:01:46Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --&gt; Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog <br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd <br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges; <br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php <br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br><br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=101Introduccion2010-09-24T23:01:02Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="700"<br />
|-<br />
| '''Tareas''' <br />
| '''Admin''' <br />
| '''Editor''' <br />
| '''Autor''' <br />
| '''Colaborador'''<br />
|-<br />
| Entradas&nbsp;: Crear nuevas <br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas&nbsp;: Publicar <br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas&nbsp;: Modificar – Eliminar <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas&nbsp;: Crear <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll&nbsp;: Mantener <br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener <br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br> <br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --&gt; Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog <br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd <br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges; <br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php <br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br> <br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=100Introduccion2010-09-24T22:59:45Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="500"<br />
|-<br />
| **Tareas**<br />
| **Admin** <br />
| **Editor** <br />
| **Autor** <br />
| **Colaborador**<br />
|-<br />
| Entradas : Crear nuevas<br />
| Sí <br />
| Sí <br />
| Sí <br />
| Sí<br />
|-<br />
| Entradas : Publicar<br />
| Sí <br />
| Sí <br />
| Sí <br />
| No<br />
|-<br />
| Entradas : Modificar – Eliminar<br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas : Crear<br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Páginas : Modificar – Eliminar<br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Categorías de Entradas : Crear<br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| BlogRoll : Mantener<br />
| Sí <br />
| Sí <br />
| No <br />
| No<br />
|-<br />
| Presentacion ( Plantillas y Widgets ) : Modificar<br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Usuarios : Mantener<br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc ) : Mantener<br />
| Sí <br />
| No <br />
| No <br />
| No<br />
|}<br />
<br />
<br />
<br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --&gt; Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog <br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd <br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges; <br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php <br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br> <br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=99Introduccion2010-09-24T22:54:26Z<p>Loretahur: /* Tipos de usuarios */</p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
{| cellspacing="1" cellpadding="1" border="1" width="500"<br />
|-<br />
| **Tareas** | **Admin** | **Editor** | **Autor** | **Colaborador** <br />
|-<br />
| Entradas&nbsp;: Crear nuevas | Sí | Sí | Sí | Sí <br />
|-<br />
| Entradas&nbsp;: Publicar | Sí | Sí | Sí | No<br />
|-<br />
| Entradas&nbsp;: Modificar – Eliminar | Sí | Sí | No | No<br />
|- <br />
| Páginas&nbsp;: Crear | Sí | Sí | No | No<br />
|- <br />
| Páginas&nbsp;: Modificar – Eliminar | Sí | Sí | No | No<br />
|- <br />
| Categorías de Entradas&nbsp;: Crear | Sí | Sí | No | No<br />
|-<br />
| BlogRoll&nbsp;: Mantener | Sí | Sí | No | No <br />
|-<br />
| Presentacion ( Plantillas y Widgets )&nbsp;: Modificar | Sí | No | No | No<br />
|-<br />
| Usuarios&nbsp;: Mantener | Sí | No | No | No<br />
|-<br />
| Opciones ( Generales, redacción, lecturas, etc )&nbsp;: Mantener | Sí | No | No | No<br />
|}<br />
<br />
<br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
== Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --&gt; Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog <br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd <br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges; <br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php <br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br> <br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Categor%C3%ADa:WordPress&diff=98Categoría:WordPress2010-09-24T22:46:04Z<p>Loretahur: Página creada con 'Categoría '''WordPress''''</p>
<hr />
<div>Categoría '''WordPress'''</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Themes&diff=97Themes2010-09-24T22:44:50Z<p>Loretahur: </p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas:<br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12.<br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas.<br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right]]<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress.<br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda.<br />
*'''search.php''': página donde se muestran los resultados de una búsqueda.<br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web.<br />
<br />
==Sidebars==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
Para usarlas posteriormente, la llamada será de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Barra Lateral Izquierda') ) : <br />
echo "El usuario no ha puesto widgets en esta barra";<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
<br />
== Cabeceras y Footers personalizados ==<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('Cine')) {<br />
get_footer('Cine');<br />
} else {<br />
get_footer();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''):<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('cine')) {<br />
get_header('cine');<br />
} else {<br />
get_header();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios).<br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos.<br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga:<br />
<br />
[[Archivo:Template Hierarchy.png]]<br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''.<br />
<br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
/* <br />
Template Name: Nombre-plantilla <br />
*/<br />
</syntaxhighlight><br />
<br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca:<br />
* Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración).<br />
* Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
get_header();<br />
if (have_posts()) :<br />
while (have_posts()) : the_post();<br />
the_content();<br />
endwhile;<br />
endif;<br />
get_sidebar();<br />
get_footer(); <br />
?><br />
</syntaxhighlight><br />
<br />
<br />
* '''wp_query->current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (have_posts()) : <br />
while (have_posts()) : the_post(); <br />
if ($wp_query->current_post < 3) {<br />
the_content();<br />
} <br />
else {<br />
the_title();<br />
}<br />
endwhile;<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos:<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id.<br />
*'''author=ID''': filtra por usuario, usando el ID del mismo.<br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente.<br />
*'''year=año''': filtra por año.<br />
*'''monthnum=mes''': filtra por mes.<br />
*'''day=día''': filtra por día.<br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
query_posts('posts_per_page=5&author=3&tag=discos');<br />
<br />
//The Loop<br />
if ( have_posts() ) : while ( have_posts() ) : the_post();<br />
..<br />
endwhile; else:<br />
..<br />
endif;<br />
<br />
//Reset Query<br />
wp_reset_query(); ?><br />
</syntaxhighlight><br />
<br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''.<br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post.<br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()].<br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if(!empty($post->post_excerpt)) {<br />
// Si tiene extracto, lo muestra<br />
the_excerpt();<br />
} else {<br />
// Si no, muestra el contenido del post<br />
the_content();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha:<br />
**l = Nombre completo del día de la semana.<br />
**F = Nombre completo para el mes.<br />
**j = Día numérico.<br />
**m = Mes con dos dígitos.<br />
**Y = Año con cuatro dígitos.<br />
**y = Año con dos dígitos.<br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_time('l, j \d\e F, Y'); //Nos muestra Martes, 14 de Septiembre, 2010 ?> <br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día.<br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]):<br />
**bloginfo('name'): muestra por pantalla el nombre del blog.<br />
**bloginfo('description'): muestra por pantalla el nombre del blog.<br />
**bloginfo('url'): muestra por pantalla la dirección del blog.<br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css).<br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme.<br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author].<br />
* [http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_tags('Etiquetas:', ' - ', '<br />'); ?><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca. <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<div class="navigation"><br />
<div class="alignleft"><?php previous_posts_link('','','&laquo; Artículos Anteriores')?></div><br />
<div class="alignright"><?php next_posts_link('','Artículos Siguientes &raquo;','')?></div><br />
</div><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (in_category('3') ){ ?><br />
<img src='/images/plant.png' alt='a plant' /><br />
<?php } elseif (in_category('4') ){ ?><br />
<img src='/images/flower.png' alt='a pretty flower' /><br />
<?php } ?><br />
</syntaxhighlight><br />
<br />
==Custom fields - Campos personalizados==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor:<br />
<br />
[[Archivo:Campos-personalizados.jpg]]<br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_custom_values("nombre-del-custom-field"); ?><br />
</syntaxhighlight><br />
<br />
<br />
O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_meta($post->ID, nombre-del-custom-field); ?><br />
</syntaxhighlight><br />
<br />
<br />
Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc...<br />
<br />
==Panel de administración del theme==<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics):<br />
<br />
<syntaxhighlight lang="php"><br />
/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?><br />
<form method="post" name="update_form" target="_self"><br />
<h1>Google Analytics</h1><br />
<table class="form-table"><br />
<tr><br />
<th>Google Analytics:</th><br />
<td><textarea name="google_analytics" style="width: 95%;" rows="10" /><br />
<?php echo get_option('google_analytics'); ?></textarea><br />Copia el código Google Analytics aquí.</td><br />
</tr><br />
</table><br />
<p class="submit" id="jump_submit"><br />
<input name="submitted" type="hidden" value="yes" /><br />
<input type="submit" name="Submit" value="Save Changes" /><br />
</form><br />
<?php <br />
}<br />
function nombredeltheme_options() {<br />
add_menu_page('Opciones del Theme', __('Opciones del Theme', 'default'), 'edit_themes', __FILE__, 'nombredeltheme_theme');<br />
}<br />
add_action('admin_menu', 'nombredeltheme_options');<br />
</syntaxhighlight><br />
<br />
<br />
Luego ponemos en el footer.php:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php echo get_option('google_analytics'); ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración.<br />
<br />
==Enlaces de interés==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.<br />
<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Themes&diff=96Themes2010-09-24T22:42:45Z<p>Loretahur: Deshecha la edición 94 de Loretahur (disc.)</p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas:<br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12.<br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas.<br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right]]<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress.<br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda.<br />
*'''search.php''': página donde se muestran los resultados de una búsqueda.<br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web.<br />
<br />
==Sidebars==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
Para usarlas posteriormente, la llamada será de la siguiente forma:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Barra Lateral Izquierda') ) : <br />
echo "El usuario no ha puesto widgets en esta barra";<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
<br />
== Cabeceras y Footers personalizados ==<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('Cine')) {<br />
get_footer('Cine');<br />
} else {<br />
get_footer();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''):<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (is_category('cine')) {<br />
get_header('cine');<br />
} else {<br />
get_header();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios).<br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos.<br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga:<br />
<br />
[[Archivo:Template Hierarchy.png]]<br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''.<br />
<br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
/* <br />
Template Name: Nombre-plantilla <br />
*/<br />
</syntaxhighlight><br />
<br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca:<br />
* Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración).<br />
* Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
get_header();<br />
if (have_posts()) :<br />
while (have_posts()) : the_post();<br />
the_content();<br />
endwhile;<br />
endif;<br />
get_sidebar();<br />
get_footer(); <br />
?><br />
</syntaxhighlight><br />
<br />
<br />
* '''wp_query->current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (have_posts()) : <br />
while (have_posts()) : the_post(); <br />
if ($wp_query->current_post < 3) {<br />
the_content();<br />
} <br />
else {<br />
the_title();<br />
}<br />
endwhile;<br />
endif; ?><br />
</syntaxhighlight><br />
<br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos:<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id.<br />
*'''author=ID''': filtra por usuario, usando el ID del mismo.<br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente.<br />
*'''year=año''': filtra por año.<br />
*'''monthnum=mes''': filtra por mes.<br />
*'''day=día''': filtra por día.<br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
query_posts('posts_per_page=5&author=3&tag=discos');<br />
<br />
//The Loop<br />
if ( have_posts() ) : while ( have_posts() ) : the_post();<br />
..<br />
endwhile; else:<br />
..<br />
endif;<br />
<br />
//Reset Query<br />
wp_reset_query(); ?><br />
</syntaxhighlight><br />
<br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''.<br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post.<br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()].<br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if(!empty($post->post_excerpt)) {<br />
// Si tiene extracto, lo muestra<br />
the_excerpt();<br />
} else {<br />
// Si no, muestra el contenido del post<br />
the_content();<br />
} ?><br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha:<br />
**l = Nombre completo del día de la semana.<br />
**F = Nombre completo para el mes.<br />
**j = Día numérico.<br />
**m = Mes con dos dígitos.<br />
**Y = Año con cuatro dígitos.<br />
**y = Año con dos dígitos.<br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_time('l, j \d\e F, Y'); //Nos muestra Martes, 14 de Septiembre, 2010 ?> <br />
</syntaxhighlight><br />
<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día.<br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]):<br />
**bloginfo('name'): muestra por pantalla el nombre del blog.<br />
**bloginfo('description'): muestra por pantalla el nombre del blog.<br />
**bloginfo('url'): muestra por pantalla la dirección del blog.<br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css).<br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme.<br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<a href="<?php bloginfo('url'); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author].<br />
* [http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php the_tags('Etiquetas:', ' - ', '<br />'); ?><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.<br />
* [http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca. <br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<div class="navigation"><br />
<div class="alignleft"><?php previous_posts_link('','','&laquo; Artículos Anteriores')?></div><br />
<div class="alignright"><?php next_posts_link('','Artículos Siguientes &raquo;','')?></div><br />
</div><br />
</syntaxhighlight><br />
<br />
<br />
* [http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php if (in_category('3') ){ ?><br />
<img src='/images/plant.png' alt='a plant' /><br />
<?php } elseif (in_category('4') ){ ?><br />
<img src='/images/flower.png' alt='a pretty flower' /><br />
<?php } ?><br />
</syntaxhighlight><br />
<br />
==Custom fields - Campos personalizados==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor:<br />
<br />
[[Archivo:Campos-personalizados.jpg]]<br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_custom_values("nombre-del-custom-field"); ?><br />
</syntaxhighlight><br />
<br />
<br />
O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php $valor_custom_field = get_post_meta($post->ID, nombre-del-custom-field); ?><br />
</syntaxhighlight><br />
<br />
<br />
Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc...<br />
<br />
==Panel de administración del theme==<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics):<br />
<br />
<syntaxhighlight lang="php"><br />
/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes') :<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?><br />
<form method="post" name="update_form" target="_self"><br />
<h1>Google Analytics</h1><br />
<table class="form-table"><br />
<tr><br />
<th>Google Analytics:</th><br />
<td><textarea name="google_analytics" style="width: 95%;" rows="10" /><br />
<?php echo get_option('google_analytics'); ?></textarea><br />Copia el código Google Analytics aquí.</td><br />
</tr><br />
</table><br />
<p class="submit" id="jump_submit"><br />
<input name="submitted" type="hidden" value="yes" /><br />
<input type="submit" name="Submit" value="Save Changes" /><br />
</form><br />
<?php <br />
}<br />
function nombredeltheme_options() {<br />
add_menu_page('Opciones del Theme', __('Opciones del Theme', 'default'), 'edit_themes', __FILE__, 'nombredeltheme_theme');<br />
}<br />
add_action('admin_menu', 'nombredeltheme_options');<br />
</syntaxhighlight><br />
<br />
<br />
Luego ponemos en el footer.php:<br />
<br />
<br />
<syntaxhighlight lang="php"><br />
<?php echo get_option('google_analytics'); ?><br />
</syntaxhighlight><br />
<br />
<br />
De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración.<br />
<br />
==Enlaces de interés==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Themes&diff=95Themes2010-09-24T22:41:08Z<p>Loretahur: Deshecha la edición 94 de Loretahur (disc.)</p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas: <br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP. <br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones <br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente: <br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12. <br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas. <br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right|Cuerpo.jpg]] <br />
<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress. <br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda. <br />
*'''search.php''': página donde se muestran los resultados de una búsqueda. <br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web. <br />
<br />
== Sidebars ==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw1">if</span> <span class="br0">(</span> <span class="kw3">function_exists</span><span class="br0">(</span><span class="st_h">'register_sidebars'</span><span class="br0">)</span> <span class="br0">)</span> <span class="br0">{</span> register_sidebar<span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span> <span class="st_h">'name'</span> <span class="sy0">=&gt;</span> <span class="st_h">'Barra Lateral Derecha'</span><span class="sy0">,</span> <span class="st_h">'before_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final de la barra'</span><span class="sy0">,</span> <span class="st_h">'before_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio del título de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final del título de la barra'</span><span class="sy0">,</span> <span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span> register_sidebar<span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span> <span class="st_h">'name'</span> <span class="sy0">=&gt;</span> <span class="st_h">'Barra Lateral Izquierda'</span><span class="sy0">,</span> <span class="st_h">'before_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final de la barra'</span><span class="sy0">,</span> <span class="st_h">'before_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio del título de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final del título de la barra'</span><span class="sy0">,</span> <span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span></pre></div></div> <br />
<br> Para usarlas posteriormente, la llamada será de la siguiente forma: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span> <span class="sy0">!</span><span class="kw3">function_exists</span><span class="br0">(</span><span class="st_h">'dynamic_sidebar'</span><span class="br0">)</span> <span class="sy0">||</span> <span class="sy0">!</span>dynamic_sidebar<span class="br0">(</span><span class="st_h">'Barra Lateral Izquierda'</span><span class="br0">)</span> <span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">echo</span> <span class="st0">"El usuario no ha puesto widgets en esta barra"</span><span class="sy0">;</span> <span class="kw1">endif</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
== Cabeceras y Footers personalizados ==<br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>is_category<span class="br0">(</span><span class="st_h">'Cine'</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> get_footer<span class="br0">(</span><span class="st_h">'Cine'</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> get_footer<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''): <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>is_category<span class="br0">(</span><span class="st_h">'cine'</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> get_header<span class="br0">(</span><span class="st_h">'cine'</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> get_header<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios). <br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos. <br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga: <br />
<br />
[[Image:Template Hierarchy.png]] <br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''. <br />
<br />
<br> <br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="coMULTI">/* <br />
Template Name: Nombre-plantilla <br />
*/</span></pre></div></div> <br />
<br> <br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca: <br />
<br />
*Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración). <br />
*Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts. <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> get_header<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">while</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> the_post<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> the_content<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">endwhile</span><span class="sy0">;</span> <span class="kw1">endif</span><span class="sy0">;</span> get_sidebar<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> get_footer<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*'''wp_query-&gt;current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">while</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> the_post<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span><span class="re0">$wp_query</span><span class="sy0">-&gt;</span><span class="me1">current_post</span> <span class="sy0">&lt;</span> <span class="nu0">3</span><span class="br0">)</span> <span class="br0">{</span> the_content<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> the_title<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">endwhile</span><span class="sy0">;</span> <span class="kw1">endif</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos: <br />
<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id. <br />
*'''author=ID''': filtra por usuario, usando el ID del mismo. <br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente. <br />
*'''year=año''': filtra por año. <br />
*'''monthnum=mes''': filtra por mes. <br />
*'''day=día''': filtra por día. <br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> query_posts<span class="br0">(</span><span class="st_h">'posts_per_page=5&amp;author=3&amp;tag=discos'</span><span class="br0">)</span><span class="sy0">;</span> &nbsp; <span class="co1">//The Loop</span> <span class="kw1">if</span> <span class="br0">(</span> have_posts<span class="br0">(</span><span class="br0">)</span> <span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">while</span> <span class="br0">(</span> have_posts<span class="br0">(</span><span class="br0">)</span> <span class="br0">)</span> <span class="sy0">:</span> the_post<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy0">..</span> <span class="kw1">endwhile</span><span class="sy0">;</span> <span class="kw1">else</span><span class="sy0">:</span> <span class="sy0">..</span> <span class="kw1">endif</span><span class="sy0">;</span> &nbsp; <span class="co1">//Reset Query</span> wp_reset_query<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''. <br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post. <br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()]. <br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">empty</span><span class="br0">(</span><span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">post_excerpt</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// Si tiene extracto, lo muestra</span> the_excerpt<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> <span class="co1">// Si no, muestra el contenido del post</span> the_content<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha: <br />
**l = Nombre completo del día de la semana. <br />
**F = Nombre completo para el mes. <br />
**j = Día numérico. <br />
**m = Mes con dos dígitos. <br />
**Y = Año con cuatro dígitos. <br />
**y = Año con dos dígitos. <br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> the_time<span class="br0">(</span><span class="st_h">'l, j \d\e F, Y'</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">//Nos muestra Martes, 14 de Septiembre, 2010&nbsp;?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día. <br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]): <br />
**bloginfo('name'): muestra por pantalla el nombre del blog. <br />
**bloginfo('description'): muestra por pantalla el nombre del blog. <br />
**bloginfo('url'): muestra por pantalla la dirección del blog. <br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css). <br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme. <br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1">&lt;a href="<span class="kw2">&lt;?php</span> bloginfo<span class="br0">(</span><span class="st_h">'url'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>" title="<span class="kw2">&lt;?php</span> bloginfo<span class="br0">(</span><span class="st_h">'name'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>"&gt;<span class="kw2">&lt;?php</span> bloginfo<span class="br0">(</span><span class="st_h">'name'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/a&gt;</pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author]. <br />
*[http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"> <span class="kw2">&lt;?php</span> the_tags<span class="br0">(</span><span class="st_h">'Etiquetas:'</span><span class="sy0">,</span> <span class="st_h">' - '</span><span class="sy0">,</span> <span class="st_h">'&lt;br /&gt;'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada. <br />
*[http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada. <br />
*[http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca.<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1">&lt;div class="navigation"&gt;<br />
&lt;div class="alignleft"&gt;<span class="kw2">&lt;?php</span> previous_posts_link<span class="br0">(</span><span class="st_h">''</span><span class="sy0">,</span><span class="st_h">''</span><span class="sy0">,</span><span class="st_h">'&amp;laquo; Artículos Anteriores'</span><span class="br0">)</span><span class="sy1">?&gt;</span>&lt;/div&gt; &lt;div class="alignright"&gt;<span class="kw2">&lt;?php</span> next_posts_link<span class="br0">(</span><span class="st_h">''</span><span class="sy0">,</span><span class="st_h">'Artículos Siguientes &amp;raquo;'</span><span class="sy0">,</span><span class="st_h">''</span><span class="br0">)</span><span class="sy1">?&gt;</span>&lt;/div&gt; &lt;/div&gt;</pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>in_category<span class="br0">(</span><span class="st_h">'3'</span><span class="br0">)</span> <span class="br0">)</span><span class="br0">{</span> <span class="sy1">?&gt;</span> &lt;img src='/images/plant.png' alt='a plant' /&gt; <span class="kw2">&lt;?php</span> <span class="br0">}</span> <span class="kw1">elseif</span> <span class="br0">(</span>in_category<span class="br0">(</span><span class="st_h">'4'</span><span class="br0">)</span> <span class="br0">)</span><span class="br0">{</span> <span class="sy1">?&gt;</span> &lt;img src='/images/flower.png' alt='a pretty flower' /&gt; <span class="kw2">&lt;?php</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
== Custom fields - Campos personalizados ==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor: <br />
<br />
[[Image:Campos-personalizados.jpg]] <br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="re0">$valor_custom_field</span> <span class="sy0">=</span> get_post_custom_values<span class="br0">(</span><span class="st0">"nombre-del-custom-field"</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="re0">$valor_custom_field</span> <span class="sy0">=</span> get_post_meta<span class="br0">(</span><span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">ID</span><span class="sy0">,</span> nombre<span class="sy0">-</span>del<span class="sy0">-</span>custom<span class="sy0">-</span>field<span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc... <br />
<br />
== Panel de administración del theme ==<br />
<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics): <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1">/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes')&nbsp;:<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?&gt;<br />
&lt;form method="post" name="update_form" target="_self"&gt;<br />
&lt;h1&gt;Google Analytics&lt;/h1&gt;<br />
&lt;table class="form-table"&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;Google Analytics:&lt;/th&gt;<br />
&lt;td&gt;&lt;textarea name="google_analytics" style="width: 95%;" rows="10" /&gt;<br />
<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> get_option<span class="br0">(</span><span class="st_h">'google_analytics'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/textarea&gt;&lt;br /&gt;Copia el código Google Analytics aquí.&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;p class="submit" id="jump_submit"&gt; &lt;input name="submitted" type="hidden" value="yes" /&gt; &lt;input type="submit" name="Submit" value="Save Changes" /&gt; &lt;/form&gt; <span class="kw2">&lt;?php</span> <span class="br0">}</span> <span class="kw2">function</span> nombredeltheme_options<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> add_menu_page<span class="br0">(</span><span class="st_h">'Opciones del Theme'</span><span class="sy0">,</span> __<span class="br0">(</span><span class="st_h">'Opciones del Theme'</span><span class="sy0">,</span> <span class="st_h">'default'</span><span class="br0">)</span><span class="sy0">,</span> <span class="st_h">'edit_themes'</span><span class="sy0">,</span> <span class="kw4">__FILE__</span><span class="sy0">,</span> <span class="st_h">'nombredeltheme_theme'</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> add_action<span class="br0">(</span><span class="st_h">'admin_menu'</span><span class="sy0">,</span> <span class="st_h">'nombredeltheme_options'</span><span class="br0">)</span><span class="sy0">;</span></pre></div></div> <br />
<br> Luego ponemos en el footer.php: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">echo</span> get_option<span class="br0">(</span><span class="st_h">'google_analytics'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración. <br />
<br />
== Enlaces de interés ==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Themes&diff=94Themes2010-09-24T22:38:23Z<p>Loretahur: </p>
<hr />
<div>== La estructura de WordPress ==<br />
<br />
Internamente WordPress se compone de los siguientes ficheros y carpetas: <br />
<br />
*'''wp-config.php''': fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP. <br />
*'''wp-admin''' y '''wp-includes''': carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones <br />
*'''wp-content''': esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente: <br />
**'''uploads''': todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12. <br />
**'''plugins''': todos los plugins que tenemos disponibles para el blog (aunque no estén activos). <br />
**'''languages''': aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre). <br />
**'''themes''': todas las plantillas que tenemos disponibles para "vestir" al blog. Nosotros nos centraremos en esta carpeta.<br />
<br />
Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas. <br />
<br />
== La estructura básica de un theme ==<br />
<br />
Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta: <br />
<br />
[[Image:Cuerpo.jpg|right|Cuerpo.jpg]] <br />
<br />
*'''header.php''': aquí se define la cabecera de la página. <br />
*'''footer.php''': aquí se define el pie de página. <br />
*'''sidebar.php''': aquí se definen las diferentes barras laterales. <br />
*'''index.php''': este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (''get_header();''), barras laterales (''get_sidebar();'') y footer (''get_footer();'') y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts. <br />
*'''single.php''': este es el fichero que se interpreta cuando se carga un post concreto. <br />
*'''archive.php''': igual que single.php pero para las páginas de categorías y etiquetas. <br />
*'''category.php''': plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero ''category.php''. Si no lo encuentra, carga ''archive.php''. Y si éste tampoco lo encuentra, se va a por el ''index.php''. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress. <br />
*'''comments.php''': plantilla de los comentarios. <br />
*'''searchform.php''': formulario de búsqueda. <br />
*'''search.php''': página donde se muestran los resultados de una búsqueda. <br />
*'''functions.php''': aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ... <br />
*'''style.css''': fichero con los estilos. <br />
*'''404.php''': si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
También desde el apartado de administración (Ajustes --&gt; Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web. <br />
<br />
== Sidebars ==<br />
<br />
Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los ''widgets''. <br />
<br />
Para que aparezcan en la sección de widgets las diferentes sidebars que queramos "alimentar" desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw1">if</span> <span class="br0">(</span> <span class="kw3">function_exists</span><span class="br0">(</span><span class="st_h">'register_sidebars'</span><span class="br0">)</span> <span class="br0">)</span> <span class="br0">{</span> register_sidebar<span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span> <span class="st_h">'name'</span> <span class="sy0">=&gt;</span> <span class="st_h">'Barra Lateral Derecha'</span><span class="sy0">,</span> <span class="st_h">'before_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final de la barra'</span><span class="sy0">,</span> <span class="st_h">'before_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio del título de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final del título de la barra'</span><span class="sy0">,</span> <span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span> register_sidebar<span class="br0">(</span><span class="kw3">array</span><span class="br0">(</span> <span class="st_h">'name'</span> <span class="sy0">=&gt;</span> <span class="st_h">'Barra Lateral Izquierda'</span><span class="sy0">,</span> <span class="st_h">'before_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_widget'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final de la barra'</span><span class="sy0">,</span> <span class="st_h">'before_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al inicio del título de la barra'</span><span class="sy0">,</span> <span class="st_h">'after_title'</span> <span class="sy0">=&gt;</span> <span class="st_h">'código html que queremos que se cargue al final del título de la barra'</span><span class="sy0">,</span> <span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span></pre></div></div> <br />
<br> Para usarlas posteriormente, la llamada será de la siguiente forma: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span> <span class="sy0">!</span><span class="kw3">function_exists</span><span class="br0">(</span><span class="st_h">'dynamic_sidebar'</span><span class="br0">)</span> <span class="sy0">||</span> <span class="sy0">!</span>dynamic_sidebar<span class="br0">(</span><span class="st_h">'Barra Lateral Izquierda'</span><span class="br0">)</span> <span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">echo</span> <span class="st0">"El usuario no ha puesto widgets en esta barra"</span><span class="sy0">;</span> <span class="kw1">endif</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
== Cabeceras y Footers personalizados ==<br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>is_category<span class="br0">(</span><span class="st_h">'Cine'</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> get_footer<span class="br0">(</span><span class="st_h">'Cine'</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> get_footer<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de ''Cine'' se cargará ''footer-cine.php''. Si no, se cargará ''footer.php''. <br />
<br />
Sería exactamente lo mismo para las cabeceras (''header-cine.php'' vs. ''header.php''): <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>is_category<span class="br0">(</span><span class="st_h">'cine'</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> get_header<span class="br0">(</span><span class="st_h">'cine'</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> get_header<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> Es decir, lo que WordPress busca es el fichero ''header-slug.php'' (el '''slug''' es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios). <br />
<br />
== Categorías y etiquetas personalizadas ==<br />
<br />
Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir ''category-slug.php'' o ''tag-slug.php'' o bien con el siguiente formato de nombre ''category-XX.php'' o ''tag-XX.php'' (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos. <br />
<br />
Aquí vemos el orden en el que WordPress busca los ficheros y los carga: <br />
<br />
[[Image:Template Hierarchy.png]] <br />
<br />
Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará ''index.php'' de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado ''single.php''. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará ''index.php''. <br />
<br />
<br> <br />
<br />
== Templates ==<br />
<br />
Podemos crear plantillas con comportamientos propios a los que luego asignar a cada '''página'''. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="coMULTI">/* <br />
Template Name: Nombre-plantilla <br />
*/</span></pre></div></div> <br />
<br> <br />
<br />
== The Loop ==<br />
<br />
El [http://codex.wordpress.org/es:The_Loop_in_Action bucle] es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca: <br />
<br />
*Si se le llama desde ''index.php'', nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración). <br />
*Si se le llama desde ''archive.php'', nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).<br />
<br />
Por tanto, es en este bucle donde procesaremos la colección de posts. <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> get_header<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">while</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> the_post<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> the_content<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">endwhile</span><span class="sy0">;</span> <span class="kw1">endif</span><span class="sy0">;</span> get_sidebar<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> get_footer<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*'''wp_query-&gt;current_post''': nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">while</span> <span class="br0">(</span>have_posts<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">:</span> the_post<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span><span class="re0">$wp_query</span><span class="sy0">-&gt;</span><span class="me1">current_post</span> <span class="sy0">&lt;</span> <span class="nu0">3</span><span class="br0">)</span> <span class="br0">{</span> the_content<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> the_title<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">endwhile</span><span class="sy0">;</span> <span class="kw1">endif</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función [http://codex.wordpress.org/Function_Reference/query_posts query_posts]. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos: <br />
<br />
*'''cat=ID''': filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa. <br />
*'''tag=slug''': filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id. <br />
*'''author=ID''': filtra por usuario, usando el ID del mismo. <br />
*'''order=ASC''' u '''order=DESC''': indica la ordenación de los resultados, ascendente o descendente. <br />
*'''year=año''': filtra por año. <br />
*'''monthnum=mes''': filtra por mes. <br />
*'''day=día''': filtra por día. <br />
*'''posts_per_page=número''': número de posts por página<br />
<br />
Ejemplo: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> query_posts<span class="br0">(</span><span class="st_h">'posts_per_page=5&amp;author=3&amp;tag=discos'</span><span class="br0">)</span><span class="sy0">;</span> &nbsp; <span class="co1">//The Loop</span> <span class="kw1">if</span> <span class="br0">(</span> have_posts<span class="br0">(</span><span class="br0">)</span> <span class="br0">)</span> <span class="sy0">:</span> <span class="kw1">while</span> <span class="br0">(</span> have_posts<span class="br0">(</span><span class="br0">)</span> <span class="br0">)</span> <span class="sy0">:</span> the_post<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy0">..</span> <span class="kw1">endwhile</span><span class="sy0">;</span> <span class="kw1">else</span><span class="sy0">:</span> <span class="sy0">..</span> <span class="kw1">endif</span><span class="sy0">;</span> &nbsp; <span class="co1">//Reset Query</span> wp_reset_query<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
== Funciones ==<br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_permalink the_permalink()]: nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con [http://codex.wordpress.org/Template_Tags/get_permalink get_permalink()] tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: ''get_permalink($post-&gt;ID)''. <br />
*[http://codex.wordpress.org/Function_Reference/the_title the_title($before, $after, $echo)]: muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html &lt;h3&gt;, podemos hacer la siguiente llamada: the_title('&lt;h3&gt;', '&lt;/h3&gt;'). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a ''true'') o no para hacer algún tratamiento con ese título (si lo ponemos a ''false''). Con [http://codex.wordpress.org/Template_Tags/get_the_title get_the_title(ID)] sucede igual que get_permalink pero para el título del post. <br />
*[http://codex.wordpress.org/Function_Reference/the_content the_content()]: muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_content get_the_content()]. <br />
*[http://codex.wordpress.org/Function_Reference/the_excerpt the_excerpt()]: muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión [http://codex.wordpress.org/Function_Reference/get_the_excerpt get_the_excerpt()].<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">empty</span><span class="br0">(</span><span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">post_excerpt</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// Si tiene extracto, lo muestra</span> the_excerpt<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> <span class="co1">// Si no, muestra el contenido del post</span> the_content<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_time the_time()]: muestra la fecha por cada post. Le podemos pasar por parámetro el [http://codex.wordpress.org/Formatting_Date_and_Time formato] de esa fecha: <br />
**l = Nombre completo del día de la semana. <br />
**F = Nombre completo para el mes. <br />
**j = Día numérico. <br />
**m = Mes con dos dígitos. <br />
**Y = Año con cuatro dígitos. <br />
**y = Año con dos dígitos. <br />
**Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra "de" le pasaremos "\d\e"<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> the_time<span class="br0">(</span><span class="st_h">'l, j \d\e F, Y'</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">//Nos muestra Martes, 14 de Septiembre, 2010&nbsp;?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_date the_date()]: igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día. <br />
*[http://codex.wordpress.org/Function_Reference/bloginfo Bloginfo]: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión [http://codex.wordpress.org/Function_Reference/get_bloginfo get_bloginfo]): <br />
**bloginfo('name'): muestra por pantalla el nombre del blog. <br />
**bloginfo('description'): muestra por pantalla el nombre del blog. <br />
**bloginfo('url'): muestra por pantalla la dirección del blog. <br />
**bloginfo('stylesheet_url'): muestra por pantalla la ruta del fichero de estilos (style.css). <br />
**bloginfo('template_url'): muestra por pantalla la ruta del theme. <br />
**bloginfo('rss2_url'): muestra por pantalla la ruta del RSS.<br />
<br />
En este ejemplo se muestra el nombre del blog enlazado a su dirección: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1">&lt;a href="<span class="kw2">&lt;?php</span> bloginfo<span class="br0">(</span><span class="st_h">'url'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>" title="<span class="kw2">&lt;?php</span> bloginfo<span class="br0">(</span><span class="st_h">'name'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>"&gt;<span class="kw2">&lt;?php</span> bloginfo<span class="br0">(</span><span class="st_h">'name'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/a&gt;</pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/the_author the_author()]: muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: [http://codex.wordpress.org/Template_Tags/get_the_author get_the_author]. <br />
*[http://codex.wordpress.org/Function_Reference/the_tags the_tags( $before, $separator, $after)]: muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión [http://codex.wordpress.org/Function_Reference/get_the_tags get_the_tags] que nos devolverá un array con las etiquetas, para que las procesemos nosotros.<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"> <span class="kw2">&lt;?php</span> the_tags<span class="br0">(</span><span class="st_h">'Etiquetas:'</span><span class="sy0">,</span> <span class="st_h">' - '</span><span class="sy0">,</span> <span class="st_h">'&lt;br /&gt;'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/posts_nav_link posts_nav_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada. <br />
*[http://codex.wordpress.org/Template_Tags/previous_posts_link previous_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada. <br />
*[http://codex.wordpress.org/Template_Tags/next_posts_link next_posts_link]: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca.<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1">&lt;div class="navigation"&gt;<br />
&lt;div class="alignleft"&gt;<span class="kw2">&lt;?php</span> previous_posts_link<span class="br0">(</span><span class="st_h">''</span><span class="sy0">,</span><span class="st_h">''</span><span class="sy0">,</span><span class="st_h">'&amp;laquo; Artículos Anteriores'</span><span class="br0">)</span><span class="sy1">?&gt;</span>&lt;/div&gt; &lt;div class="alignright"&gt;<span class="kw2">&lt;?php</span> next_posts_link<span class="br0">(</span><span class="st_h">''</span><span class="sy0">,</span><span class="st_h">'Artículos Siguientes &amp;raquo;'</span><span class="sy0">,</span><span class="st_h">''</span><span class="br0">)</span><span class="sy1">?&gt;</span>&lt;/div&gt; &lt;/div&gt;</pre></div></div> <br />
<br> <br />
<br />
*[http://codex.wordpress.org/Function_Reference/in_category in_category($category)]: nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.<br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">if</span> <span class="br0">(</span>in_category<span class="br0">(</span><span class="st_h">'3'</span><span class="br0">)</span> <span class="br0">)</span><span class="br0">{</span> <span class="sy1">?&gt;</span> &lt;img src='/images/plant.png' alt='a plant' /&gt; <span class="kw2">&lt;?php</span> <span class="br0">}</span> <span class="kw1">elseif</span> <span class="br0">(</span>in_category<span class="br0">(</span><span class="st_h">'4'</span><span class="br0">)</span> <span class="br0">)</span><span class="br0">{</span> <span class="sy1">?&gt;</span> &lt;img src='/images/flower.png' alt='a pretty flower' /&gt; <span class="kw2">&lt;?php</span> <span class="br0">}</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
== Custom fields - Campos personalizados ==<br />
<br />
Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir [http://codex.wordpress.org/Custom_Fields campos personalizados] introduciendo un nombre y un valor: <br />
<br />
[[Image:Campos-personalizados.jpg]] <br />
<br />
El '''Nombre''' será el identificador de nuestro campo personalizado y el '''Valor''' lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada [http://codex.wordpress.org/Function_Reference/get_post_custom_values get_post_custom_values]: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="re0">$valor_custom_field</span> <span class="sy0">=</span> get_post_custom_values<span class="br0">(</span><span class="st0">"nombre-del-custom-field"</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> O también con la función [http://codex.wordpress.org/Function_Reference/get_post_meta get_post_meta]: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="re0">$valor_custom_field</span> <span class="sy0">=</span> get_post_meta<span class="br0">(</span><span class="re0">$post</span><span class="sy0">-&gt;</span><span class="me1">ID</span><span class="sy0">,</span> nombre<span class="sy0">-</span>del<span class="sy0">-</span>custom<span class="sy0">-</span>field<span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc...). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc... <br />
<br />
== Panel de administración del theme ==<br />
<br />
Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics): <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1">/* Meter código de Google Analytics */<br />
function nombredeltheme_theme() {<br />
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes')&nbsp;:<br />
update_option("google_analytics", stripslashes($_POST['google_analytics']));<br />
endif;<br />
?&gt;<br />
&lt;form method="post" name="update_form" target="_self"&gt;<br />
&lt;h1&gt;Google Analytics&lt;/h1&gt;<br />
&lt;table class="form-table"&gt;<br />
&lt;tr&gt;<br />
&lt;th&gt;Google Analytics:&lt;/th&gt;<br />
&lt;td&gt;&lt;textarea name="google_analytics" style="width: 95%;" rows="10" /&gt;<br />
<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> get_option<span class="br0">(</span><span class="st_h">'google_analytics'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/textarea&gt;&lt;br /&gt;Copia el código Google Analytics aquí.&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;p class="submit" id="jump_submit"&gt; &lt;input name="submitted" type="hidden" value="yes" /&gt; &lt;input type="submit" name="Submit" value="Save Changes" /&gt; &lt;/form&gt; <span class="kw2">&lt;?php</span> <span class="br0">}</span> <span class="kw2">function</span> nombredeltheme_options<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> add_menu_page<span class="br0">(</span><span class="st_h">'Opciones del Theme'</span><span class="sy0">,</span> __<span class="br0">(</span><span class="st_h">'Opciones del Theme'</span><span class="sy0">,</span> <span class="st_h">'default'</span><span class="br0">)</span><span class="sy0">,</span> <span class="st_h">'edit_themes'</span><span class="sy0">,</span> <span class="kw4">__FILE__</span><span class="sy0">,</span> <span class="st_h">'nombredeltheme_theme'</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> add_action<span class="br0">(</span><span class="st_h">'admin_menu'</span><span class="sy0">,</span> <span class="st_h">'nombredeltheme_options'</span><span class="br0">)</span><span class="sy0">;</span></pre></div></div> <br />
<br> Luego ponemos en el footer.php: <br />
<br />
<br> <br />
<div style="text-align: left;" class="mw-geshi" dir="ltr"><div class="php source-php"><pre class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">echo</span> get_option<span class="br0">(</span><span class="st_h">'google_analytics'</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></pre></div></div> <br />
<br> De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración. <br />
<br />
== Enlaces de interés ==<br />
<br />
*Nuestra nueva biblia: [http://codex.wordpress.org Codex Wordpress]. <br />
*El gran [http://wordpress.org/extend/themes/ repositorio] de WordPress de plantillas, para que seleccionemos una como base para la modificación.<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Plugins&diff=93Plugins2010-09-24T22:37:52Z<p>Loretahur: </p>
<hr />
<div>*[http://www.viper007bond.com/wordpress-plugins/vipers-video-quicktags/ Viper’s Video Quicktags]: añade al editor de posts los botones para escribir el código de inserción de vídeos de YouTube, Vimeo, DailyMotion, Veoh y Blip.tv. Además los códigos que genera validan HTML. <br />
*[http://wordpress.org/extend/plugins/as-pdf/ AS-PDF]: genera un fichero pdf para cada post o página que publiques.<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=92Introduccion2010-09-24T22:37:20Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam). <br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog. <br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type. <br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site. <br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,... <br />
<br />
=== Pros y contras de WordPress.com y WordPress.org ===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones. <br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta. <br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software. <br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br> Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/ <br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br> <br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol] <br />
<br />
== Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --&gt; Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog <br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd <br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass'; $ flush privileges; <br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php chmod o-r wp-config.php chmod g-w wp-config.php chmod g-r wp-config.php <br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br> <br />
<br />
== Configuración ==<br />
<br />
Tras la instalación es recomendable configurar las siguientes opciones: <br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --&gt; Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br> <br />
<br />
== Plugins ==<br />
<br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos. <br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br> <br />
<br />
== Themes ==<br />
<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --&gt; Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ... <br />
<br />
La estructura básica de un theme es la siguiente: <br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') ) { <br />
<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Derecha',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' =&gt; 'Barra Lateral Izquierda',<br />
'before_widget' =&gt; 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' =&gt; 'código html que queremos que se cargue al final de la barra',<br />
'before_title' =&gt; 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' =&gt; 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
<br />
} <br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/* Template Name: Nombre-plantilla <br />
<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br> <br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br> <br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP<br />
<br />
[[Category:WordPress]]</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=91Introduccion2010-09-24T22:36:13Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam).<br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog.<br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type.<br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site.<br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,...<br />
<br />
=== Pros y contras de WordPress.com y WordPress.org===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones.<br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta.<br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software.<br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br />
Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/<br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
<br />
[[Image:Role-table.jpg]] <br />
<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
==Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --> Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog<br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd<br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';<br />
$ flush privileges;<br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php<br />
chmod o-r wp-config.php<br />
chmod g-w wp-config.php<br />
chmod g-r wp-config.php<br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br />
== Configuración ==<br />
Tras la instalación es recomendable configurar las siguientes opciones:<br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --> Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br />
== Plugins == <br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos.<br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br />
== Themes ==<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --> Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ...<br />
<br />
La estructura básica de un theme es la siguiente:<br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/*<br />
Template Name: Nombre-plantilla<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Archivo:Role-table.jpg&diff=90Archivo:Role-table.jpg2010-09-24T22:31:19Z<p>Loretahur: </p>
<hr />
<div></div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=89Introduccion2010-09-24T22:30:32Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam).<br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog.<br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type.<br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site.<br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,...<br />
<br />
=== Pros y contras de WordPress.com y WordPress.org===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones.<br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta.<br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software.<br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br />
Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/<br />
<br />
=== Tipos de usuarios ===<br />
<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios. <br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad): <br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ... <br />
*'''Colaborador''': puede crear entradas pero no las puede publicar. <br />
*'''Autor''': puede crear entradas y publicarlas. <br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll. <br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
|| **Tareas** || **Admin** || **Editor** || **Autor** || **Colaborador** ||<br />
|| Entradas : Crear nuevas || Sí || Sí || Sí || Sí ||<br />
|| Entradas : Publicar || Sí || Sí || Sí || No ||<br />
|| Entradas : Modificar – Eliminar || Sí || Sí || No || No ||<br />
|| Páginas : Crear || Sí || Sí || No || No ||<br />
|| Páginas : Modificar – Eliminar || Sí || Sí || No || No ||<br />
|| Categorías de Entradas : Crear || Sí || Sí || No || No ||<br />
|| BlogRoll : Mantener || Sí || Sí || No || No ||<br />
|| Presentacion ( Plantillas y Widgets ) : Modificar || Sí || No || No || No ||<br />
|| Usuarios : Mantener || Sí || No || No || No ||<br />
|| Opciones ( Generales, redacción, lecturas, etc ) : Mantener || Sí || No || No || No ||<br />
<br />
[image:role-table.jpg]<br />
[http://codex.wordpress.org/Roles_and_Capabilities| Roles vs. Capacidades de cada rol]<br />
<br />
==Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --> Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog<br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd<br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';<br />
$ flush privileges;<br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php<br />
chmod o-r wp-config.php<br />
chmod g-w wp-config.php<br />
chmod g-r wp-config.php<br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br />
== Configuración ==<br />
Tras la instalación es recomendable configurar las siguientes opciones:<br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --> Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br />
== Plugins == <br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos.<br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br />
== Themes ==<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --> Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ...<br />
<br />
La estructura básica de un theme es la siguiente:<br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/*<br />
Template Name: Nombre-plantilla<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP</div>Loretahurhttp://wiki.loretahur.net/index.php?title=Introduccion&diff=88Introduccion2010-09-24T21:05:40Z<p>Loretahur: </p>
<hr />
<div>== ¿Qué es WordPress? ==<br />
Es un CMS (Sistema de Gestión de Contenidos) especialmente pensado en la publicación de bitácoras pero que puede ser usado para la creación de webs de edición fácil y rápida. Tiene una serie de funcionalidades que vienen en su núcleo (gestión de feeds, búsquedas, etiquetas, categorías, ...) y luego se le pueden añadir otras muchas a través de plugins (por ejemplo, un detector de spam).<br />
<br />
Con WordPress tenemos dos opciones: crearnos un blog en su plataforma comercial ([http://wordpress.com/ wordpress.com]) o en nuestro propio servidor gracias a su software bajo licencia GPL ([http://wordpress.org/ wordpress.org]). En ambos casos el gasto es cero pero con excepciones. En el primero, determinadas funcionalidades son de pago (por ejemplo, la posibilidad de editar el css de nuestra plantilla) y en el segundo, el coste estará en el servidor en el que decidamos montar nuestro blog.<br />
<br />
En 2003, el proyecto b2\cafelog, que contaba con unos 2000 blogs, se dividió en dos ramas: b2evolution y WordPress. De la mano de Matt Mullenweg y Mike Little, la plataforma ganó muchos usuarios coincidiendo con el cambio de licencia de Movable Type.<br />
<br />
Es de código abierto, está escrito en php y usa MySQL como gestor de base de datos. Uno de sus puntos más fuertes es la enorme comunidad de desarrolladores que tiene a sus espaldas. Al ser software libre, cualquiera puede escribir un plugin para agregar una funcionalidad determinada: desde la más rara (que nos aparezcan frases del musical Hello, Dolly! en nuestro panel de administración) a la más avanzada. Por esta razón tenemos un gran repositorio de plugins y plantillas para personalizar tanto como queramos nuestro site.<br />
<br />
Como curiosidad queda que cada nueva versión recibe el nombre de una leyenda del jazz: Miles Davis, Art Blakey, Charles Mingus, Billy Strayhorn,...<br />
<br />
=== Pros y contras de WordPress.com y WordPress.org===<br />
<br />
*'''Pros de WordPress.org''': es software libre, lo que nos aporta una transparencia de su funcionamiento. Además cuenta con una gran comunidad de desarrolladores que mantienen el sistema vivo y en continua evolución. El contenido es completamente tuyo dado que eres tú el que almacena los archivos y la base de datos del blog. Se tiene un control total sobre el diseño. Permite importar contenidos de otras plataformas como Blogger, LiveJournal, Movable Type,... Se puede ampliar fácilmente la funcionalidad de este gestor de contenidos mediante extensiones.<br />
*'''Contras de WordPress.org''': somos los responsables de la instalación y del mantenimiento del software y WordPress se caracteriza por las continuas actualizaciones para mejorar versiones anteriores y arreglar los fallos que éstas pudieran tener. Se necesita disponer de alojamiento y de dominio. Las copias de seguridad corren de nuestra cuenta.<br />
*'''Pros de WordPress.com''': la plataforma evoluciona al mismo ritmo que su hermana libre (WordPress.org), lo que hace que sea un sistema que se adapta a las novedades que aparecen en la cambiante Red. Nos ahorramos los gastos de un servidor y un dominio propio, así como el trabajo que supone actualizar la versión del software.<br />
*'''Contras de WordPress.com''': si deseamos instalar plugins o hacer modificaciones sobre el diseño de nuestra bitácora, deberemos tirar de cartera. Lo mismo que para ampliar los 3 GB de espacio para el almacenamiento de imágenes y ficheros subidos.<br />
<br />
<br />
Wordpress tiene una parte visible para todo el mundo (a no ser que lo hagamos privado mediante un plugin) y una parte desde la que se administra los contenidos. Normalmente, el acceso a esa parte de administración está en la dirección http://urldelblog/wp-admin/<br />
<br />
===Tipos de usuarios===<br />
Por defecto, en WP, está desactivada la opción de que cualquiera pueda registrarse. Esa opción se habilita desde el panel de control, en Opciones Generales. Allí, conjuntamente se añade el rol por defecto que tomarían esos nuevos usuarios.<br />
<br />
En WordPress existen cinco perfiles con diferentes privilegios (si queremos crear otros roles con permisos distintos, tendremos que instalar un plugin que nos provea de esa funcionalidad):<br />
<br />
*'''Suscriptor''': es un mero lector que puede configurar su avatar, su dirección de correo, su página web, ...<br />
*'''Colaborador''': puede crear entradas pero no las puede publicar.<br />
*'''Autor''': puede crear entradas y publicarlas.<br />
*'''Editor''': puede crear, eliminar, modificar y publicar entradas (tanto suyas como de otros). Lo mismo con las páginas, las categorías y los enlaces del blogroll.<br />
*'''Administrador''': a lo que hace el editor, se le suma la administración de usuarios, gestión de plantillas y plugins, así como opciones generales del blog.<br />
<br />
<br />
Tareas<br />
Admin<br />
Editor<br />
Autor<br />
Colaborador<br />
Entradas : Crear nuevas<br />
Sí<br />
Sí<br />
Sí<br />
Sí<br />
Entradas : Publicar<br />
Sí<br />
Sí<br />
Sí<br />
No<br />
Entradas : Modificar – Eliminar<br />
Sí<br />
Sí<br />
No<br />
No<br />
Páginas : Crear<br />
Sí<br />
Sí<br />
No<br />
No<br />
Páginas : Modificar – Eliminar<br />
Sí<br />
Sí<br />
No<br />
No<br />
Categorías de Entradas : Crear<br />
Sí<br />
Sí<br />
No<br />
No<br />
BlogRoll : Mantener<br />
Sí<br />
Sí<br />
No<br />
No<br />
Presentacion ( Plantillas y Widgets ) : Modificar<br />
Sí<br />
No<br />
No<br />
No<br />
Usuarios : Mantener<br />
Sí<br />
No<br />
No<br />
No<br />
Opciones ( Generales, redacción, lecturas, etc ) : Mantener<br />
Sí<br />
No<br />
No<br />
No<br />
<br />
role-table.jpg<br />
Roles vs. Capacidades de cada rol<br />
<br />
==Instalación ==<br />
<br />
1. Bajamos el paquete de Wordpress en castellano<br />
2. Extraemos el .zip descargado y copiamos la carpeta en /var/www/blog (o el directorio desde donde se sirvan las páginas por el apache). La estructura de WordPress es la siguiente:<br />
1. wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.<br />
2. wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones<br />
3. wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:<br />
1. uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12 (pero se puede configurar desde Opciones --> Misceláneas).<br />
2. plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).<br />
3. themes: todas las plantillas que tenemos disponibles para "vestir" al blog.<br />
4. languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define ('WPLANG', 'es_ES'); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).<br />
3. Ponemos los permisos adecuados para la carpeta blog (como owner y group al usuario de apache):<br />
<br />
chown -R www-data:www-data blog<br />
<br />
1. Creamos una BD para wordpress ¡¡IMPORTANTE!! El nombre de la base de datos no puede tener guiones altos<br />
<br />
mysqladmin -u root -p create nombrebd<br />
<br />
* Creamos un usuario con permisos para esa BD:<br />
<br />
$ grant all on nombrebd.* to usuario@localhost IDENTIFIED BY 'pass';<br />
$ flush privileges;<br />
<br />
1. Lanzamos desde el navegador la instalación ¡¡IMPORTANTE!! Cambiar el prefijo de las tablas SQL por defecto (wp_) durante la instalación por razones de seguridad<br />
2. Quitamos permisos al fichero wp-config.php<br />
<br />
chmod o-w wp-config.php<br />
chmod o-r wp-config.php<br />
chmod g-w wp-config.php<br />
chmod g-r wp-config.php<br />
<br />
1. Borramos los siguientes ficheros:<br />
1. wp-config-sample.php<br />
2. wp-admin/upgrade.php<br />
3. wp-admin/install.php<br />
4. wp-admin/installer-helper.php<br />
Si no vamos a importar ningún blog de otro sistema, borramos también: wp-admin/import/<br />
<br />
<br />
== Configuración ==<br />
Tras la instalación es recomendable configurar las siguientes opciones:<br />
<br />
* Por razones de seguridad, cambiamos el nombre por defecto del usuario administrador (admin). Para ello, creamos un usuario con el rol de administrador, iniciamos sesión con esa nueva cuenta y borramos la de admin, asignando a ese nuevo usuario todo lo creado por admin.<br />
* Generamos una SECRET_KEY y unas Security Keys y las ponemos en wp-config.php<br />
* Cambiar los permalinks: en personalizada ponemos /%postname%/ o la forma que más nos guste. A poder ser, que sean url's "bonitas".<br />
* En Opciones --> Discusión dejar sólo marcada la opción "El autor del comentario debe rellenar el nombre y el e-mail" para que no estén todos los mensajes moderados por defecto.<br />
<br />
<br />
== Plugins == <br />
Como hemos comentado anteriormente, WP tiene un núcleo con funcionalidades básicas que pueden ser complementadas por plugins. A continuación vamos a describir algunos de los más interesantes, aunque podremos descargarnos muchos más desde el repositorio de WP, alimentado por todos los usuarios que van haciendo pequeños desarrollos.<br />
<br />
* Akismet: la mejor lucha contra el spam creada por el propio equipo de WP.<br />
* Contact Form 7: para crear formularios personalizados en múltiples idiomas, con múltiples campos y diferentes validaciones. Por ejemplo, el de contacto.<br />
* xlanguage: si queremos tener nuestro site en varios idiomas.<br />
* All in One SEO Pack: para optimizar al máximo nuestro site frente a los buscadores. El complemento ideal es Google XML Sitemaps, que genera de forma automática nuestro sitemap cada vez que se publica algo nuevo.<br />
* Si queremos que nuestros artículos puedan ser mandados de forma fácil a redes sociales como Facebook, twitter, menéame, etc... Sociable es nuestro plugin.<br />
* Subscribe To Comments: para permitir a nuestros lectores recibir notificaciones vía correo cuando alguien deje comentarios en determinadas entradas.<br />
* Members Only - Permite que el blog sólo sea accesible por usuarios registrados (tanto a posts como a la parte de administración).<br />
* wpDirAuth: si queremos que los usuarios del site se validen contra un LDAP.<br />
* Yet Another Related Posts: para obtener artículos relacionados con uno ya escrito en base a datos coincidentes como etiquetas, categorías o aparición de palabras en común.<br />
* Para "corporativizar" WP, se puede incluir un logo en la pantalla de login y en la zona de administración.<br />
* Para controlar la memoria empleada por WP: WP memory usage control.<br />
<br />
<br />
== Themes ==<br />
En WordPress es sumamente sencillo cambiar la apariencia de nuestra página. Tenemos miles de plantillas para elegir, pero también podremos crear el nuestro. Además, desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia --> Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, ...<br />
<br />
La estructura básica de un theme es la siguiente:<br />
<br />
* header.php: aquí se define la cabecera de la página.<br />
* footer.php: aquí se define el pie de página.<br />
* sidebar.php: aquí se definen las diferentes barras laterales. Para que aparezcan en la sección de widgets para que puedan ser "alimentadas" desde el apartada de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:<br />
<br />
if ( function_exists('register_sidebars') )<br />
{<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Derecha',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
register_sidebar(array(<br />
'name' => 'Barra Lateral Izquierda',<br />
'before_widget' => 'código html que queremos que se cargue al inicio de la barra',<br />
'after_widget' => 'código html que queremos que se cargue al final de la barra',<br />
'before_title' => 'código html que queremos que se cargue al inicio del título de la barra',<br />
'after_title' => 'código html que queremos que se cargue al final del título de la barra',<br />
));<br />
}<br />
<br />
* index.php: este es el fichero que carga de inicio del site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();).<br />
* single.php: este es el fichero que se interpreta cuando se carga un post concreto.<br />
* archive.php: igual que single.php pero para las páginas de categorías y etiquetas.<br />
* functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, ...<br />
* Templates: podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WP como una template, hay que incluir al inicio del mismo el siguiente código:<br />
<br />
/*<br />
Template Name: Nombre-plantilla<br />
*/<br />
<br />
* style.css: fichero con los estilos.<br />
* 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.<br />
<br />
<br />
== Otros ==<br />
<br />
* Emoticonos<br />
* Gestión de idiomas<br />
* Cómo hacer backup de los datos:<br />
<br />
Tanto en WordPress.com como en la versión instalada en nuestro servidor, la opción de exportar se encuentra en la sección de “Herramientas" de la columna lateral de configuración. Hay que pinchar en el botón “Descargar el archivo de exportación", lo que nos genera un archivo XML con todos los posts, comentarios, campos personalizados, categorías y etiquetas. Este fichero se puede utilizar para ser importado en otro sitio creado con WordPress. También se puede importar desde otras plataformas, como Blogger, Posterous, LiveJournal y Movable Type, entre otros.<br />
<br />
<br />
== Enlaces de interés ==<br />
<br />
* Directorio de plugins<br />
* Directorio de themes<br />
* WordPress Codex, el rincón del programador de WP</div>Loretahur