miércoles, 12 de marzo de 2014

Cómo incrementar la seguridad de una web creada con WordPress

Cómo incrementar la seguridad de una web creada con WordPress

Cómo incrementar la seguridad de una web creada con WordPress


Dado el gran éxito de WordPress son cada vez más altas las preocupaciones de sus usuarios por estar al día de todos los consejos relativos a la seguridad de su web. No es raro encontrar usuarios a los que les han hackeado su web, les han instalado un virus que borra toda la base de datos, tienen cuentas de administradores fantasmas o de repente generan miles de comentarios con enlaces a material adulto o de venta de viagra. Al ser tan popular WordPress los ataques se disparan. Puedes pensar que esto no te va a pasar a tí, pero si no tomas las medidas necesarias de precaución aumentarás la probabilidad de que te ocurra. Para evitar estos problemas o, al menos, para ponérselo lo más difícil posible a cualquier hacker o a cualquier robot que ande por la red buscando instalaciones de WordPress desprevenidas lo mejor es seguir unas recetas básicas de seguridad antes, durante y después de la instalación de WordPress.

Antes de la instalación

a) Muchas empresas de alojamiento ofrecen la posibilidad de instalar WordPress de manera automática mediante Fantástico. Aunque es una opción realmente cómoda, tiene un inconveniente: No nos permite configurar a nuestro gusto la instalación de WordPress, especialmente en cuanto al prefijo de las tablas en la base de datos, ya que se utilizará wp_, que es el que utiliza el programa de instalación por defecto. Si podéis, haced una instalación manual. Si preferís usar Fantástico recordad cambiar más adelante el prefijo de las tablas de la base de datos (veréis más adelante cómo hacerlo) b) Antes de instalar WordPress hemos de decidir dónde instalarlo. Lo podemos instalar en el directorio raíz de tu web, que sería lo normal. Pero también podemos instalarlo en una carpeta a la que le podemos dar un nombre cualquiera, por ejemplo “comentarios” u otro que se nos ocurra (algunos autores recomiendan utilizar nombres absurdos y difíciles de imaginar). Si hemos elegido “comentarios”, y para que nuestra web no aparezca como en http://www.miweb.es/comentarios/, necesitaremos mover los archivos index.php y .htaccess desde dentro de la carpeta “comentarios” al directorio raíz. Después habría que cambiar dentro de index.php estas líneas:
a estas:
Una vez hayas instalado WordPress entra en tu panel de administración (www.miweb.es/comentarios/wp-admin) y ve a Opciones/General y asegúrate de que la Dirección de WordPress (URL) sea http://www.miweb.es/comentarios/ (o cualquiera que sea en tu caso) y que la Dirección del Blog (URL) sea http://www.miweb.es/ De esta manera se adquiere un plus extra de seguridad frente a bots escaneando la red buscando archivos de WordPress. Además, como ventaja, se obtiene un directorio raíz más limpio.

Durante la instalación

Durante la instalación hay varios procedimientos que fortalecerán tu instalación de WordPress: a) En primer lugar es recomendable cambiar el prefijo de de las tablas de la base de datos antes de que esta se genere. Este prefijo se cambia en el archivo wp-config.php. Por defecto aparece “wp_”. Cámbialo por cualquier otro prefijo. Por ejemplo:
Si ya hemos instalado WordPress y queremos cambiar el prefijo a posteriori, hay plugins que lo hacen por nosotros: WP Prefix Table Changer, WordPress Table Prefix Rename Plugin o Wp-Security Scan (del que hablaremos también más adelante). b) Igualmente, en wp-config.php puedes definir cuatro claves de seguridad que te ayudan a incrementar la seguridad de WordPress. Estas claves se pueden crear manualmente o a través de WordPress.org. Estas cuatro claves se asignan a diferentes cookies y se utilizan en diversos lugares para incrementar la seguridad de WordPress. Estas claves son: * AUTH_KEY * SECURE_AUTH_KEY T * LOGGED_IN_KEY * NONCE_KEY Símplemente copia los valores que hayas obtenido de manera automática en el enlace anterior de WordPress.org en cada línea correspondiente de tu wp-config.php, por ejemplo:

Una vez instalado WordPress

a) Crear un archivo vacío index.html en aquellos directorios que no lo tengan, lo que permite que no se pueda listar el contenido del directorio. Como alternativa más sencilla podemos añadir esta línea en nuestro archivo .htaccess: Options -Indexes b) Utilizar acceso seguro. Si en tu solución de hosting tienes posibilidad de utilizar acceso vía SSL (Secure Socket Layer), aunque sea compartido, utilízalo. Para ello tendrás que activarlo en el archivo wp-config.php:
c) Cambiar el nombre del usuario. El usuario por defecto de la nueva instalación será “admin”. Dejar este usuario es dar facilidades a cualquiera malintencionado. Hay dos opciones: o crear un nuevo usuario y borrar el usuario “admin” tal y como explico en un artículo anterior (Primeros pasos tras una nueva instalación de WordPress) o crear un nuevo usuario con funciones de administrador y al usuario admin cambiarle el rol a Suscriptor, para que no pueda hacer nada. d) Mover el archivo wp-config.php: También explicado en mi artículo anterior. Este archivo es vital para proteger la seguridad de tu web. En él están datos vitales como los que permiten el acceso a tu base de datos. WordPress permite mover este archivo a UNA carpeta superior dentro del alojamiento de la web. De esta manera podemos sacar este archivo fuera del acceso público sin ningún problema. Por ejemplo, si tenemos una estructura con varias carpetas en la que una es public_html, que es donde está la web, podemos sacar el archivo a la carpeta superior no accesible por el público general:

 


wordpress_config1


e) Suprimir el mensaje de error en la entrada al administrador: Cuando vamos a acceder al administrador de WordPress y nos equivocamos por ejemplo en la contraseña saldrá un mensaje que nos dirá que lo que está mal es la contraseña. Si no queremos dejar pistas podemos incluir esta línea en el archivo functions.php de nuestro tema:
f) Utilizar una contraseña segura, que sea difícil de adivinar. Utiliza una contraseña larga, con mezcla de mayúsculas, minúsculas, números… Que sea una contraseña única que no hayas utilizado para ninguna otra cosa. Además es una buena idea cambiar de contraseña cada cierto tiempo. g) Haz copias de seguridad de tu Base de Datos tan frecuentemente como sea necesario. Para hacer copias de seguridad manualmente vía phpMyadmin puedes seguir esta guía paso a paso de WordPress.org. Hay también plugins que hacen la copia de seguridad por ti e incluso te la envían por email si así lo quieres, como WP-DBManager o WP-DB-Backup h) Asegúrate de que el ordenador desde el que entras a tu panel de administración está libre de virus, spyware y cualquier programa malicioso. Es importante que tengas en tu ordenador un buen antivirus puesto al día. i) Mantén tu versión de WordPress siempre actualizada a la última versión disponible. Hay ocasiones en la que incluso se crean nuevas versiones para hacer frente a agujeros de seguridad que se han descubierto en ese momento. Igualmente es importante mantener actualizados todos tus plugins. j) Instala Plugins de Seguridad. Entre ellos destacan: - WP Security Scan, que comprueba tu instalación de WordPress, busca áreas vulnerables y te propone acciones para corregirlas. - WordPress Exploit Scanner, que busca entre los ficheros de la web y entre las entradas y comentarios en las tablas de la base de datos cualquier cosa sospechosa.También busca entre los plugins activos ficheros con nombres sospechosos. No borra nada, símplemente te informa de los resultados de sus análisis. - Limit Login Attempts, que limita el número de intentos posibles para entrar en el área de administración. Por defecto WordPress permite un número ilimitado de intentos, lo cual es una facilidad añadida a cualquiera que quiera entrar mediante prueba-error. - AntiVirus for WordPress, que se centra en la detección de software malintencionado que pueda atacar nuestra instalación de WordPress. Incluso te puede enviar notificaciones por email - Askimet, que viene instalado con WordPress y sólo hay que activarlo, y que elimina todo el spam de los comentarios. k) Seguridad vía .htaccess. Hay muchas opciones (ver Hardening WordPress with htaccess). Por ejemplo: Si no podemos llevarnos el archivo wp-config.php como indicamos más arriba podemos protegerlo añadiendo en el archivo .htaccess que está en el directorio raiz lo siguiente para negar todos los accesos al archivo:
Si queremos negar todos los accesos excepto los de una IP en particular al archivo wp-config-php:
Si tu IP es dinámica (como suele ser normalmente) y varía entre dos números (por ejemplo, entre 123.456.789.1 y 123.456.789.255) puedes poner:
También podemos proteger el directorio wp-admin. La manera más sencilla de hacerlo es a través del archivo .htaccess situado dentro de dicho directorio (si no existiera puedes crearlo). Haríamos igual que antes:
Debes tener cuidado al proteger el directorio wp-admin, ya que puede bloquear el acceso a algunos plugins o a algunas funcionalidades de WordPress. Para evitar jaleos puedes instalar un plugin que haga esto por tí, como AskApache Password Protection o WP-Adminprotection Además, podemos proteger toda una serie de archivos sensibles (.htaccess, .htpasswd, php.ini, scripts php, archivos flash .fla, archivos de photoshop .psd o archivos log) de igual manera:
l) Hay autores que aconsejan borrar el archivo wp-admin/install.php tras realizar la instalación de WordPress ya que en alguna rara ocasión puede suceder que tras un error WordPress piense que aún no está instalado y trate de ejecutar el archivo install.php Otra oción es sustituir el contenido del archivo por esto, mucho más útil, tal y como proponen en Important Security Fix for WordPress (lo he dejado en inglés, como en el original):
m) Dejar de mostrar la versión de WordPress que tenemos instalada. Muchos temas de WordPress la muestran, lo cual no deja de dar pistas a usuarios malintencionados. Para ello añadiríamos la siguiente línea al archivo functions.php de nuestro tema:
n) Evitar que otras webs utilicen imágenes u otro contenido de tu web (lo que se suele llamar hotlinks). Me ha ocurrido en ocasiones que otras webs han utilizado imágenes, iconos, etc.. de webs mías simplemente enlazándolas con lo cual utilizan ancho de banda mío. Para evitarlo lo podemos hacer vía el archivo .htaccess:
Podemos encontrar más consejos sobre este particular en Creating the Ultimate htaccess Anti-Hotlinking Strategy. o) En septiembre del 2009 hubo un ataque generalizado a muchas instalaciones de WordPress, que fueron infectadas con código malicioso. Recientemente Jeff Starr de Perishable Press ha propuesto una solución que protege igualmente de ataques futuros. Simplemente hay que crear un fichero php con este código y guardarlo en la carpeta plugins. Al activarlo desde el panel de administración nos protegerá silenciosamente detectando solicitudes con cadenas demasiado grandes (más de 255 caracteres) así como la presencia de “eval(” o “base64” en el URI solicitado.
Hay muchas más opciones recomendables, aunque con las anteriores se conseguiría un nivel de protección muy alto. Es conveniente estar suscrito a blogs de WordPress donde estar al día de las novedades que vayan surgiendo sobre el particular, como por ejemplo el blog en Español Ayuda WordPress.
 

Sigue a Juan en Twitter, en Google+, o suscríbete al RSS Feed de Emenia para estar al día de nuestros artículos.

miércoles, 6 de febrero de 2013

Cómo configurar los registros DNS por Carlos Cruz

Hola un saludo me parecía un tema muy interesante, y por eso lo colgué tenéis en el corte enlaces a otros temas desarrollados por Carlos.

Cómo configurar los registros DNS


Durante el último mes hemos ido publicando una serie de artículos que, paso a paso, pretenden asistir a todo aquel que con escasos conocimientos previos, tenga intención de generar su propia página web, ya sea personal, de una empresa o una agrupación. El primer escalón fue un artículo dedicado al registro del dominio, la segunda entrega contenía algunas indicaciones a tener en cuenta en el diseño de tu página, y la más reciente se centraba en recomendaciones para contratar alojamiento web. En esta ocasión, pondremos la atención en cómo configurar la DNS y dirigir tu dominio al ordenador donde has hospedado la página web.
Como se expuso en artículos anteriores, el dominio es el nombre de tu página web. La dirección que se escribe en el navegador y que dirigirá al visitante a tu portal sin que tenga que escribir la IP. Mientras que www.tupagina.com es fácil de recordar, nadie accede a la misma a través de su dirección IP, compuesta por muchas cifras. El Domain Name System (DNS), es decir, sistema de nombres de dominio, organiza e identifica dominios con una o varias direcciones IP. Ya hemos visto que existen planes de alojamiento que incluyen el registro del dominio. En estos casos o, al menos en su mayoría, no es necesario configurar el DNS para dirigir tu dominio al servidor, porque la empresa de alojamiento suele incorporar a los dominios sus servidores DNS preestablecidos. Sin embargo, cuando el registro del dominio y la contratación de alojamiento se han realizado a través de medios distintos, o si deseas dirigir tu dominio a tu propio servidor, es imprescindible configurar las direcciones DNS.
Antes de continuar, es necesario indicar y clasificar los distintos tipos de registro que se pueden configurar en el DNS. Existen varios tipos de relación entre dominio y servidor según las características de lo que quieres identificar:
mundo_conectado
  • Registros A (del inglés Adress): dirigen tu dominio a la IP de tu servidor en el hosting que has contratado.
  • Registros NS (Name Server): especifican los servidores de nombres que tienen autoridad sobre el dominio.
  • Registros CNAME: establecen relaciones entre dominios (por ejemplo para redirigir tupagina.net a www.tupagina.com).
  • Registros MX: configuran el servicio de correo electrónico de una página web.
  • Registros PTR: son la opción inversa, dirigir una IP a un dominio. Se utilizan con poca frecuencia.
Si, como se ha dicho antes, tienes uno o varios dominios registrados en una empresa y el alojamiento de tu web en otra, se te ofrecen dos opciones. Por un lado, puedes gestionar las DNS en la empresa que te ofrece el dominio. Si la empresa te lo permite, sólo tendrás que crear un registro A hacia la IP de tu servidor en el hosting. En caso de que prefieras gestionarlo con el servidor DNS de tu empresa de alojamiento, deberás cambiar los registros NS de tu empresa de registro de dominio por los de tu proveedor de alojamiento. Entonces realizarás otro registro A, esta vez desde la gestión DNS del hosting. Generalmente, la información que necesitas para esta tarea, es decir, las direcciones y registros, te la proporciona la empresa de alojamiento.
el_mundo_con_webLo que parece un proceso algo complejo en la teoría, resulta menos entramado en la práctica. A través de un panel de gestión al que se accede fácilmente desde el servicio de registro o de alojamiento, tu tarea será sólo la de introducir los nombres de los servidores DNS (ns.hostingdeejemplo.com, ns2.hostingdeejemplo.com...) y la dirección o direcciones IP del servidor DNS. Además, en muchos casos, los servicios de hosting incluyen la gestión de registros y extras como los MX y CNAME.
El proveedor de alojamiento suele tener en cuenta que tu dominio puede introducirse en el navegador de distintas formas, por eso automatiza algunos registros CNAME como por ejemplo el ya mencionado tupagina.net que redirige a www.tupagina.com. Pero puedes necesitar más registros CNAME para establecer más relaciones con otras alteraciones de tu dominio. Mediante las opciones de gestión que te ofrezca el proveedor, en este caso deberás introducir por un lado el nombre del dominio y, por otro, las alteraciones que quieras que dirijan a éste. Merece especial atención, también, la cuestión de los registros MX, dedicados al servicio de correo electrónico. Muchos planes de hosting, como se ha apuntado antes, integran varios servicios que pueden configurar directamente los registros necesarios. Algunos incluyen cuentas de correo, con lo que asocian por defecto los registros a la dirección IP del alojamiento. Si deseas cambiar el servicio de correo electrónico, los registros que deberás modificar son los MX, poniendo en su lugar la información que te proporciona el nuevo servidor de correo.
tecnologias_web Con la configuración de los registros DNS que, insisto, suele ser más fácil en la práctica que en la teoría, tu página web será completamente funcional y todo el mundo podrá visitarla a cualquier hora del día desde cualquier lugar con conexión a Internet. Así, y tras registrar el dominio, diseñar el sitio web y contratar el alojamiento, tu proyecto web está a punto para salir del horno y cumplir con los objetivos para los que fue ideado. Ahora bien, todo fluye, todo avanza, y es muy recomendable que, una vez hayas arrancado tu página web, sigas aprendiendo como perfeccionarla para ganar rigor, calidad y, como seguramente desearás, muchas visitas. Mejora tu página web registrando nuevos dominios, aprendiendo en profundidad técnicas y métodos de diseño web, utilizando tu ordenador o los ordenadores de tu empresa como servidores propios, etc. La cuestión es no dejar nunca de estar al día, porque Internet y las nuevas tecnologías representan un escenario en constante evolución y si no se tiene en cuenta y se evoluciona con él, se corre el riesgo de que el barco te deje en tierra.
Resto de artículos relacionados con esta colección:

martes, 27 de noviembre de 2012

Transforma tu viejo router en una tarjeta WiFi

Trabajando con routers, quería ver si podíamos usar un router antiguo para usarlo de forma de conectar un pc a una red inalambrica. Encontré esta solución. http://www.pcactual.com/articulo/zona_practica/paso_a_paso/4336/transforma_viejo_router_una_tarjeta_wifi.html#paso_3_prepara_wds_en_el_segundo_router

Transforma tu viejo router en una tarjeta WiFi

Transforma tu viejo router en una tarjeta WiFi

NIVEL: AVANZADO

Configurando WDS (Wireless Distribution System) en dos routers podemos interconectar de forma inalámbrica un PC que no disponga de interfaz WiFi y un router con acceso a Internet. Para lograrlo debemos manipular ambos dispositivos para que trabajen en el mismo canal de comunicaciones inalámbrico. Es esencial que los dos puedan operar en modo WDS, de hecho, les asignaremos la misma clave WEP y comunicaremos a cada uno la dirección MAC del otro. Finalmente, el PC y ambos routers deberán formar parte de la misma subred.
En este práctico hemos empleado dos dispositivos suministrados por proveedores de servicios de Internet populares. El que se responsabiliza de la conexión a Internet es un CPAJJJSE20TL2 de Telsey, y el que hace las veces de tarjeta WiFi para nuestro PC un SMC7904WBRA de SMC, pero no resultará difícil extrapolar este procedimiento a los modelos de otros fabricantes.

Paso 1. Obtención de la dirección MAC

En primer lugar debes configurar el router que tiene acceso a Internet. Para ello, conecta el PC al dispositivo de SMC mediante un cable RJ45. Para obtener su dirección MAC (la necesitaremos más adelante para configurar el router Telsey) abre una ventana de comandos desde Inicio/Ejecutar…/cmd y escribe la orden ipconfig. Ahora, toma nota de la dirección IP de la puerta de enlace (en nuestro caso es 192.168.2.1) y, a continuación, introduce el comando arp –a 192.168.2.1 y apunta la dirección MAC (en nuestro caso 00:13:f7:92:xx:xx).
paso-1

Paso 2. Activa WDS

Ahora conecta el router Telsey al PC mediante un cable RJ45. Para entrar en la ventana de configuración web necesitas averiguar la IP de este dispositivo, por lo que debes escribir en la ventana de comandos la orden ipconfig. Después, toma nota de la dirección IP de la puerta de enlace (en este caso es 192.168.0.1) y, a continuación, abre una ventana del navegador de Internet para introducir la dirección http:\\192.168.0.1:8063 (en este modelo en concreto hay que especificar el puerto 8063).
Ahora introduce como usuario user y la contraseña que figura en la documentación que acompaña al router (será una clave del tipo WFRJGXXX). A continuación, activa la interfaz WiFi del dispositivo. Para lograrlo accede a Red inalámbrica/Configuración básica y marca la casilla Activar red inalámbrica.
paso-2-1
En el campo SSID (identificador de la red) anota el nombre que debe tener la red inalámbrica y pincha en Guardar/Aplicar. El campo BSSID es la dirección MAC del router Telsey que después introduciremos en el SMC. Activa ahora la opción WDS en el menú Red inalámbrica/Puente de red. En AP mode elige la opción Punto de acceso, activa las restricciones y escribe la MAC del SMC (00:13:f7:92:xx:xx). Haz clic en Guardar/Aplicar.
Para continuar, selecciona Red inalámbrica/Opciones Avanzadas, elige un canal (nosotros seleccionamos el 11) y pincha en Guardar/Aplicar. Evita la opción auto que permite al router elegir el canal automáticamente. Para finalizar, configura la seguridad WEP desde el menú Red inalámbrica/Seguridad, habilita el cifrado WEP y especifica una contraseña (en este caso nosotros usamos una de 128 bits). Pincha en Guardar/Aplicar.
paso-2-2

Paso 3. Prepara WDS en el segundo router

Ahora debes desconectar el PC del Telsey y conectarlo al router SMC mediante el cable RJ45. Para entrar en la ventana de configuración web abre el navegador y escribe la dirección que obtuviste en el Paso 1 mediante el comando ipconfig (para este modelo el puerto es el 80 aunque no es necesario escribirlo) e introduce la contraseña admin. Ahora, activa la interfaz WiFi del router.
En el menú Wireless marca la casilla Enable Wireless Function y pulsa en Save Settings. Tras esto, ve al menú Wireless/Channel and SSID y, en el campo Primary (SSID primario del router), escribe un nombre, por ejemplo, Router_SMC_P. En Secondary (SSID secundario) introduce un nombre distinto, por ejemplo, Router_SMC_S. Elige ahora Wireless Mode Mixed y, en el campo Canal, selecciona el mismo que elegiste en el Telsey (en nuestro caso fue el 11). Haz clic en Apply.
paso-3-1
Para configurar la seguridad WEP accede al menú Wireless/Security, marca Allowed client type/WEP y anota la misma clave que usamos en el router Telsey en los campos Key 1 a Key 4 (en nuestro ejemplo utilizamos una de 128 bits). Tras esto, graba los cambios pulsando sobre Apply.
Ahora es el momento de activar la prestación WDS. Para lograrlo accede al menú Wireless/WDS y marca Enable WDS Function. A continuación, pulsa sobre Rescan y el router SMC encontrará a su compañero, el Telsey (la MAC debe coincidir con el BSSID de este último que anotamos en el Paso 2). Marca ahora el campo que coincide con el router Telsey y haz clic en Apply.
paso-3-2

Paso 4. Últimos pasos con la infraestructura

Es el momento de configurar ambos routers y el PC para que trabajen en la misma subred. Comienza por el SMC aprovechando que tienes abierta la ventana de configuración web. Elige la pestaña LAN, marca Deshabilitar el servidor DHCP e introduce la misma máscara de subred que tiene el Telsey, así como una IP que esté dentro de la subred de dicho router (en nuestro caso la máscara es 255.255.255.0 y configuramos la IP 192.168.0.30, que no debe coincidir con la IP del Telsey ni con la que pondremos en el PC). Para guardar los cambios pincha en Save settings. Llegados a este punto el PC perderá la conexión con el router SMC debido a que se encuentran en subredes distintas.
paso-4-1
Únicamente queda configurar el PC en la misma subred que ambos routers. En Windows accede a Inicio/Mis sitios de red/Ver conexiones de red, haz clic utilizando el botón derecho del ratón sobre Conexión de área local y elige Propiedades. Haz ahora doble clic en Protocolo Internet (TCP/IP) y marca Usar la siguiente dirección IP.
A continuación, introduce una IP que esté dentro de la subred de ambos routers y no coincida con ninguna de ellas (por ejemplo 192.168.0.194). Como máscara de subred escribe la misma que en ambos dispositivos (255.255.255.0), y como puerta de enlace y servidor DNS primario introduce la dirección IP del router que está conectado a Internet, que en este caso es la del Telsey (192.168.0.1). Haz clic ahora en Aceptar y ya tendrás configurada toda la infraestructura necesaria.
paso-4-2

Paso 5. Las pruebas

Antes de concluir debes comprobar que todo funciona correctamente. Haz un ping al router SMC introduciendo en la ventana de comandos la orden ping 192.168.0.30. Si todo ha salido bien, recibirás respuesta. Enseguida, haz también ping a la puerta de enlace, es decir, al router Telsey. Para ello teclea ping 192.168.0.1. También deberías recibir respuesta. De ser así, ya puedes comenzar a disfrutar tu nueva conexión inalámbrica a Internet.
wifi-1

martes, 13 de noviembre de 2012

Incluir páginas y subpáginas en WordPress por Nekko

bueno estoy realizando un proyecto en wordpress, y mirando mirando ví este post que parece bastante interesante y clarificador, es decir muy claro. No se si funciona etc... lo cuelgo para ilustraros. 


por Nekko. Emprendedora incansable, fundadora de SummArg y de SiteFun.

Incluir páginas y subpáginas en WordPress

Estaba trabajando en un projecto en el que tenía que ingeniarmelas para colocar en el menú de cabecera las páginas hijas y las páginas padre, con sus respectivos condicionales para el caso de que no existieran subpáginas de un item. Afortunadamente me encontré con el blog de Gabriel Svennerberg en donde llegó a elaborar un código muy prolijo que pude utilizar para mi proyecto.
Este contenido está extraido del mencionado blog.

Chequear si la página tiene subpáginas

En primer lugar busqué un método en el codex de WordPress que ayude a determinar si la página actual tiene o no subpáginas, al no encontrarlo elaboré un modo de hacerlo. Básicamente se trata de llamar a las páginas hijas utilizando wp_list_pages() y ver si devuelve algo. No es lindo pero funciona.

$children = wp_list_pages('&child_of='.$post->ID.'&echo=0');
if($children) {
 // Si esta página contiene subpáginas...
}

Chequear si es una página padre o una subpágina

Lo siguiente que tuve que resolver fue el chequeo para conocer si la página actual es una página padre o es una subpágina. Esto se puede realizar con el siguiente código:

if(is_page() && $post->post_parent) {
 // Si es una subpágina
} else {
 // Es página padre
}

Cargando el submenu

Ahora necesitaba una forma de cargar las subpáginas. Esto se puede hacer utilizando la función wp_list_pages(). La parte complicada de esto es que no existe un modo para obtener la página padre y las subpáginas en una misma llamada, así que hay que llamar a la función dos veces y con ligeros cambios cada vez.

if(is_page() && $post->post_parent) {
 // Si es una subpágina
 $children = wp_list_pages("title_li=&include=".$post->post_parent ."&echo=0");
 $children .= wp_list_pages("title_li=&child_of=".$post->post_parent ."&echo=0");

} else if($has_subpages) {
    // Es una página contiene subpáginas
    $children = wp_list_pages("title_li=&include=".$post->ID ."&echo=0");
    $children .= wp_list_pages("title_li=&child_of=".$post->ID ."&echo=0");
}
Hay otros modos de hacer esto, pero el beneficio de este método es que automáticamente obtenemos class=”current_page_item” en el item que representa la página en la que actualmente estamos, lo cual es útil si queremos darle un estilo en particular.

Salida a HTML

El último paso consiste en imprimir el HTML, para lo que elegí una lista desordenada.

<?php // Chequear que haya algo para mostrar ?>
<?php if ($children) { ?>
<ul>
    <?php echo $children; ?>
</ul>
<?php } ?>

Colocando todo junto

Ahora es tiempo de colocar todas las piezas juntas. Este código puede colocarse en cualquiera de las secciones de tu theme.

<?php
$has_subpages = false;
// Chequea para ver si la página actual tiene subpáginas
$children = wp_list_pages('&child_of='.$post->ID.'&echo=0');
if($children) {
    $has_subpages = true;
}
// Reseting $children
$children = "";

// Llama a los items dependiendo si es una subpágina o página padre
if(is_page() && $post->post_parent) {
    // Si es una subpagina
    $children = wp_list_pages("title_li=&include=".$post->post_parent ."&echo=0");
    $children .= wp_list_pages("title_li=&child_of=".$post->post_parent ."&echo=0");
} else if($has_subpages) {
    // Si es una página padre que tiene subpáginas
    $children = wp_list_pages("title_li=&include=".$post->ID ."&echo=0");
    $children .= wp_list_pages("title_li=&child_of=".$post->ID ."&echo=0");
}
?>
<?php // Chequea que exista algo que mostrar ?>
<?php if ($children) { ?>
<ul>
    <?php echo $children; ?>
</ul>
<?php } ?>

viernes, 27 de julio de 2012

Carga aleatoria controlada de mp3 en Flash

Si deseamos cargar al azar y sin repetir los archivos, crearemos un array, de esta manera ir guardando los nuevos valores ya cargados y saber cuales ya han sido usados.

Básicamente he creado dos funciones, una será la que se encargue de darme un valor aleatorio y que no se repita en un ciclo determinado (este será el numero de archivos disponibles) function Busqueda() . Y la otra es la que se encargara de reproducir el sonido function activarsonido().

Al principio estableceremos la variables del array, y crearemos el objeto de sonido new Sound();.

Tambien crearemos tres variables, estas seran fijas durante toda la ejecución de las funciones, y servirán para poder personalizar estas. Las variables son TextoSound , ArchivoExtension y NumMovies. Estas variables tambien podrian introducirse como parametros al llamar a la función...(esto sería otro tema).

Este sera el codigo (Lee con mucha atención los comentarios; es donde esta la explicación)




//-----------------------------------carga al azar de mp3, pero sin repetir----------------------------------

var MiArray = new Array();
var playMusic = new Sound();
var ValorIni = 0;
/* Para mayor simplicidad es aconsejable que el primer archivo de la serie, tenga como numeral el 0.
La variable TextoSound es para el texto del nombre por ejemplo: "MySound" esto sería lo que correspondería
al primer archivo:"MySound0.mp3", de esta manera solo tienes que modificar esta variable para adaptarla
a tus archivos.
La variable ArchivoExtension es obvio esta variable es para especificar la extensión de los archivos, en este
caso mp3.
La variable NumMovies es para el numero total de archivos que deseas que hagan el ciclo por ejemplo:
" MySound0.mp3, MySound1.mp3, MySound2.mp3, MySound3.mp3= 4 archivos. Modifica este valor según
las imágenes de que dispongas */

var TextoSound = " MySound ";
var ArchivoExtension = ".mp3";
var NumMovies = 4;
//-----------------------------------------------------------------------------------------------------------
/* Esta función sólo nos devolverá un valor comprendido en la variable NumMovies, este se comprobara para ver
si ya existe en un Array creado en tiempo de ejecución. */

function Busqueda() {
var Controlde = true;
// while.. si ya se ha emitido el numero, repite la búsqueda del numero al azar
while (Controlde == true) {
Controlde = false;
Minor = random(NumMovies);
//for.. recorre todos las variables del Array, para buscar si ya ha sido emitido el numero actual
for (x=0; x<(NumMovies); x++) {
if (MiArray[x] == Minor) {
Controlde = true;
break;
}
}
}
/* Una vez pasado el número aleatorio y comprobado que no existe en ningún elemento del Array crea un
nuevo elemento del Array e introduce el nuevo valor. A continuación subimos el valor de la
variable, para el siguiente elemento */

MiArray[ValorIni] = Minor;
ValorIni++;
return Minor;
/*return.. se utiliza para que al solicitar una función nos devuelva el valor de la variable que se
indica. */

}
//-----------------------------------------------------------------------------------------------------------
function activarsonido() {
/*En esta variable solicita mediante la función, la entrada de un numero válido. */
MiNum = Busqueda();
var musica = TextoSound+MiNum+ArchivoExtension;
playMusic.loadSound(musica, true);
/* el evento ...onSoundComplete activa la función una vez se ha acabado de reproducir el sonido, y el
condicional if.. cierra el ciclo cuando se ha acabado de emitir todos los archivos de sonido */

playMusic.onSoundComplete = function() {
if (ValorIni<(NumMovies)) {
activarsonido();
}
};
}
//-----------------------------------------------------------------------------------------------------------
/*Este evento inica la reproducción, yo lo he puesto al cargar la línea principal de tiempo , pero se puede
modificar y colocar en cualquier otro evento, por ejemplo en un botón "on(release)..." */

_root.onLoad = function() {
activarsonido();
};
//-----------------------------------------------------------------------------------By Silvestre

...FIN DEL CODIGO

Este tutorial es creado en base a una pregunta del foro.

Si quieres dejar alguna pregunta o sugerencia.. te lo agradeceria.