In Programación, Wordpress

En anteriores post ya os hablé de Widget Logic, que es un plugin con el que poder manejar la aparición o no de tus wodgets en WordPress.

También vimos varios ejemplos de como trabajaba Widget Logic, y de como añadir condicionales para la aparición de nuestros widgets. Por ejemplo: is_home(), is_category(‘contacto’), is_category(8), in_category(9), in_page(), is_home || in_category(array(’23′,’34′), etc….

Por experiencia te digo, que muchos de los condicionantes que tenemos en el Worpdress nativo, se nos quedan cortos. Así que hoy te voy a mostrar varias funciones que puedes añadir al core de wordpress, y ganar el versatilidad a la hora de crear tus condicionantes PHP.

Lo primero es ubicarte y decirte donde tienes que añadir estas funciones (o cualqier otra que se te ocurra) para que Widget Logic las “pille” sin problemas. Tienes que irte a la carpeta wp-includes de tu wordpress y al archivo query.php que encontrarás ahí dentro. Te situas en el final de archivo y puedes empezar a añadir funciones.

Decirte, que puedes llamar como quieras a estas funciones, y que las puedes llamar desde widdget Logic con ese mismo nombre.

function is_hijo( $page_path ){
 if( !is_page() ){
 return false;
 }
 $ancestors = get_post_ancestors( get_queried_object_id() );
 $page = get_page_by_path( $page_path );
 if( $page )
 return in_array( $page->ID, $ancestors );
 return false;
 }

Esta función como su nombre dice, es para avariguar si una pagina es hija de otra superior.

 

function in_url( $page_path ){
 $cadena2= $_SERVER['REQUEST_URI'];
 $buscar2= $page_path;
 if(eregi($buscar2, $cadena2)) {
 return true;
 } else {
 return false;
 }
 }

 

Esta función te dice, si en la URL de nuestra web,se encuentra alguna palabra.

 

function get_parent_category() {
 foreach ((get_the_category()) as $cat) {
 if ($cat->category_parent) return $cat->category_parent;
 else return $cat->cat_ID;}
 }
 function in_hijo( $page_path ){
$id = get_parent_category();
if ($id == $page_path) {
return true;
} else {
return false;
}
}

 

Esta ultima función, se puede utilizar para saber si te encuentras dentro de una categoría hijo de una categoría marcada