Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Funcionamiento núcleo wordpress

Estas en el tema de Funcionamiento núcleo wordpress en el foro de WordPress en Foros del Web. He estado buscando información de como hacer esto pero no he encontrado nada. También he revisado el funcionamiento de Wordpress pero no consigo dar con ...
  #1 (permalink)  
Antiguo 24/02/2015, 07:37
dankko
Invitado
 
Mensajes: n/a
Puntos:
Funcionamiento núcleo wordpress

He estado buscando información de como hacer esto pero no he encontrado nada.
También he revisado el funcionamiento de Wordpress pero no consigo dar con como hace la llamada a cada archivo de plantilla...

Mi idea es añadir más páginas básicas como single.php o page.php a una plantilla. Por ejemplo, una podría ser profile.php, donde se genere el perfil de un usuario.

El problema es que no se me ocurre como podría hacerlo, ya que desconozco como WordPress hace las llamadas a los archivos de plantilla...

He estado haciendo probaturas con archivos como template.php, template-loeader.php, theme.php pero realmente no se como wordpress sabe en que momento tiene que llamar a la función get_404_template(), por poner un ejemplo...

A alguien se le ocurre una idea o sabe como funciona?

No quiero utilizar page-templates.

Gracias
  #2 (permalink)  
Antiguo 24/02/2015, 08:28
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 11 meses
Puntos: 145
Respuesta: Funcionamiento núcleo wordpress

La verdad es que todo lo que necesitas lo puedes hacer con tan solo conocer la arquitectura de archivos de los templates, no requieres intervenir el core ni nada de eso.

En el siguiente archivo puedes ver la arquitectura completa para crear templates
http://codex.wordpress.org/images/9/...-hierarchy.jpg

Por ejemplo, supongamos que tienes una serie de categorias y quieres que la categoria con ID 7 tenga otro layout, basta con que crees el archivo category-7.php, lo mismo con page, tag, author, etc etc.

También te puedo mencionar que wordpress tiene varios modos de extenderlo, pero en ningún caso lo hagas modificando el core, ya que eso impedirá que en el futuro puedas actualizar wordpress, la idea es extender wordpress desde el template y para ello wordpress es capaz de procesar un archivo con lo que quieras extender, ese archivo debe llamarse functions.php. También puedes utilizar ezsql, la cual es la class de abstracción que utiliza wordpress, con la cual puedes tener acceso a la base de datos. Y por último te recomiendo leer sobre las funciones wp_insert_post(), wp_update_post(), wp_delete_post(), wp_publish_post(), wp_delete_attachment(), wp_get_attachment_url(), wp_insert_attachment(), wp_insert_post_data() que sirven para manipular contenidos desde fuera del wp-admin, por ejemplo podrías crear un pequeño panel de administración para tus usuarios.

Los plugins no lo te los menciono porque desde functions.php puedes hacer básicamente lo mismo, el problema de los plugins es cuando se abusa de ellos descargándolos incluso de fuentes de dudosa procedencia. La idea es que los sitios no se vayan convirtiendo en frankestein que luego se tornan difíciles de manejar llevando al caos y haciendo tus sitios muy vulnerables.

Saludos.
__________________
http://chicho.ninja yiaaaa

Última edición por chichote; 24/02/2015 a las 08:33
  #3 (permalink)  
Antiguo 24/02/2015, 12:22
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Funcionamiento núcleo wordpress

Hola chichote. Tu mensaje me ha sido de gran ayuda.
El problema es que necesito, como me propusiste, generar un perfil de usuario. Quisiera hacerlo de la manera que dije. Mi intención es no actualizar el wordpress, por eso quiero saber como hace las llamadas a los archivos de plantilla. Como sabe cuando tiene que llamar a single o cuando a page. Leí el Codex sobre la jerarquía de los archivos, pero sigo sin comprender que clase o que función es la que decide llamar a determinados archivos... no se si me explico.

Gracias.
  #4 (permalink)  
Antiguo 24/02/2015, 13:37
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 11 meses
Puntos: 145
Respuesta: Funcionamiento núcleo wordpress

creo que no me di a entender, vamos nuevamente

No necesitas class, con el solo hecho de que estés invocando la url de un usuario y tengas en tu theme el archivo author.php ya tienes como mostrar un perfil de usuario.

En caso de que exista un usuario muy importante y quieras diferenciarlo con colores diferentes, otro layout o o que tu imaginación te dicte, basta con crear en tu theme el archivo author-1.php donde 1 es el ID del usuario.

La palabra jerarquía no es antojadiza, y precisamente existe una jerarquía de archivos, esto quiere decir que hay archivos más importantes que otros. Por ejemplo

Si tienes un template muy básico (header.php, footer.php, index.php y style.css), si cargas por url una categoria te invocará por defecto el archivo index.php, si cargas un post (cualquiera sea), por defecto te cargará index.php, todo esto por el simple hecho de que no existen los archivos single.php y category.php, digamos que index.php carga por defecto. Pero que pasa si creas el archivo category.php?, entonces la cosa cambia, y si un usuario invoca la url de una categoria, por ejemplo ejemplo.com/category/mi-categoria, ya no te cargará el index.php, sino más bien category.php.

Espero haberte aclarado las dudas.

Saludos.
__________________
http://chicho.ninja yiaaaa
  #5 (permalink)  
Antiguo 25/02/2015, 03:32
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Funcionamiento núcleo wordpress

Hola Chichote. Creo que el se está explicando mal soy yo jeje.
Si, todo lo que me explicaste lo entiendo. Se como funcionan las jerarquías.

Yo lo que pretendo, es modificar wordpress para que exista en la jerarquía profile.php, de modo que si yo llamo a la url de profile, wordpress busque en la carpeta del theme un archivo llamado profile y si no, pase al index.php.

El problema es que no se como hacer para que wordpress incluya este nuevo archivo en su jerarquía y como poder hacer para llamarlo mediante get, generar un enlace hacia él, como por ejemplo lo hace wordpress con get_the_permalink()...

Las únicas opciones que se me ocurren son modificando desde el theme. Lo último que hice fue crear una función que comprobase lo que pasaba por GET y lo fuese metiendo en un array. Entonces en el index.php hice un un IF que preguntase que se estaba pasando por GET, y si es profile, pues que cargase profile.php, sino que continuase con el funcionamiento normal de la jerarquía del theme... pero esto realmente no es lo que busco.

Espero haberme explicado.

Gracias.
  #6 (permalink)  
Antiguo 25/02/2015, 07:57
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 11 meses
Puntos: 145
Respuesta: Funcionamiento núcleo wordpress

Creo entender jajajaja.

Haber. veo varias formas.

La primera podría ser (la mas simple de todas):
crear un archivo tipo page, por ejemplo page-profile.php, lo ubicas dentro de tu theme y en las primeras lineas agregas el siguiente bloque de código

Código PHP:
<?php
/*
Template Name: Administraciones
*/
?>
Luego vas a tu wp-admin y creas una pagina llamada Profile o que al menos tenga como slug "profile" y al costado derecho aparecerá un campo tipo select en donde podrás elegir tu archivo php que acabas de crear. Ya dentro de tu archivo page-profile.php programar lo que se te plazca. Pero hay dos detalles, y es que para que te funcione debes tener configurado los permalinks en la opción "Nombre entrada", y por otro lado la función para traer los permalink de los usuarios no te entregará la ruta correcta, tendrías que aplicar las rutas a mano dentro de tu template, algo como:

Código:
<a href="<?php echo home_url( '/' ); ?><?php the_author_meta(ID'); ?>"><?php the_author_meta('display_name'); ?></a>

Otra opción, es la que más me gusta, es que utilices la misma estructura de wordpress para los usuarios y solo cambies la ruta por la que se carga el perfil del usuario, por defecto es "www.ejemplo.com/author/el_usuario", lo que tendríamos que hacer es cambiar author por profile, para ello debes crearte un archivo llamado functions.php dentro de tu theme y utiliza el siguiente código, es bien simple no tiene mayor explicación.

Código PHP:
<?php

add_action
('init''cambiar_author_base');
function 
cambiar_author_base() {
    global 
$wp_rewrite;
    
$wp_rewrite->author_base 'profile'// Pon aquí el slug o base para tus usuarios
    //print_r($wp_rewrite);
}


?>
Una vez hechos los cambios y con el archivo ya cargado en tu servidor deberás resetear los permalinks, basta con que te dirijas a "Ajustes > Enlaces permanentes" y des click en el boton "Guardar cambios", de este modo se volverá a crear el htaccess de tu sitio con la nueva configuración. El archivo de tu theme donde deberás poner el layout para los profile es author.php, ahi podrás programar a tu antojo, rescatar foto, nombre, etc, para los post es tan simple como agregar el loop de wordpress.



Y por último, también se me ocurre que crees un nuevo tipo de post type mediante custom_post_type el cual puedes llamar profile, pero eso te lo dejo a ti para que lo averigues, es bastante simple, aunque de primera al ver el código podría ser un poco agobiante. Todo esto también en el archivo functions.php.

En estricto rigor no es necesario que todo esté dentro de functions.php, este es el archivo que wordpress intentará leer, pero dentro de este archivo puedes hacer includes o requires, de tal modo de tener tus funciones más ordenadas.

Veamos si ahora si concordamos.

Saludos.
__________________
http://chicho.ninja yiaaaa

Última edición por chichote; 25/02/2015 a las 08:02
  #7 (permalink)  
Antiguo 26/02/2015, 16:59
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Funcionamiento núcleo wordpress

Hola Chichote;

Me gusto mucho la segunda propuesta. El caso es que sigue sin convencerme del todo.

Yo lo que quiero es añadir un nuevo tipo de request a wordpress por get, como por ejemplo, la del post o páginas que es ?p=1. Pues lo que intento es crear un paso por get que sea ?prof=idusuario, y que wordpress al detectar este paso por get, sea capaz de hacer una llamada una función get_the_profile(), por ejemplo, y que si no encontrase un archivo llamado profile en la plantilla llamase a index.php.

Sería posible hacer esto?

Saludos.
  #8 (permalink)  
Antiguo 27/02/2015, 04:54
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 11 meses
Puntos: 145
Respuesta: Funcionamiento núcleo wordpress

jajaja, no entiendo para que quieres crear profile si ya existe author q hace lo mismo, es como decir no me gusta single por lo que quiero crear otro tipo de contenido llamado artículos y que haga lo mismo. Como te menciono en el post anterior, tienes los custom post type y custom post field, con los cuales puedes crear un nuevo tipo de contenido ��.

En todo caso capturar GET e incluir un archivo llamado profile del template es tan básico y simple de hacer, que lo único que te puedo decir es que antes de que continúes con la aventura WordPress leas un tutorial básico de PHP.

Saludos
__________________
http://chicho.ninja yiaaaa
  #9 (permalink)  
Antiguo 27/02/2015, 10:58
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Funcionamiento núcleo wordpress

Cita:
Iniciado por chichote Ver Mensaje
jajaja, no entiendo para que quieres crear profile si ya existe author q hace lo mismo, es como decir no me gusta single por lo que quiero crear otro tipo de contenido llamado artículos y que haga lo mismo. Como te menciono en el post anterior, tienes los custom post type y custom post field, con los cuales puedes crear un nuevo tipo de contenido ��.

En todo caso capturar GET e incluir un archivo llamado profile del template es tan básico y simple de hacer, que lo único que te puedo decir es que antes de que continúes con la aventura WordPress leas un tutorial básico de PHP.

Saludos
En author entiendo que saldrían los artículos del autor "x", no?
Es por lo que no entiendo que haces referencia a author.

Lo que yo hago desde la plantilla, es crear una función llamada request, en la cual capturo en un array los elementos que voy pasando por get, y lo devuelvo como una cadena. Luego hago otra comprobación.

Si hay un archivo llamado "profile"(es lo que pasaría por get) pues que lo llame con un require o un include. Si no lo encuntra pues que pase a index...

El caso es que no me gusta extender el WordPress desde la plantilla. Me gustaría adaptarlo un poco más a mis necesidades.

Todas tus respuestas me han sido de gran ayuda.

Etiquetas: request, theme
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.