Archivo de la categoría: WordPress

Apartado para el mundo de la programación en WordPress

Cambiar url de registro de WordPress

Para cambiar la url de registro de WordPress este dispone de un hook con el cual la cambiaremos de una forma muy sencilla como veremos a continuación:

/**
 * Cambiando la url e registro por defecto de WordPress
 */
add_filter( 'register_url', 'custom_register_url' );
function custom_register_url( $register_url ){
    $register_url = get_permalink( $id_post );
    return $register_url;
}

Traducir un plugin en WordPress

Para poder traducir un plugin en WordPress debes añadir en el archivo de configuración del plugin las siguientes lineas de código:

add_action( 'plugins_loaded', 'myplugin_load_textdomain' );

function myplugin_load_textdomain(){
    load_plugin_textdomain( 'my-plugin', false, dirname(plugin_basename(__FILE__)).'/languages' );
}

Con esto conseguimos que cuando WordPress carge los plugins añada los archivos de traducción del plugin. Para que todo esto funcione correctamente el parametro que en este caso coge el valor “my-plugin” debe ser el nombre del plugin y “languages” el nombre del directorio donde estan los archivos .po y .mo de las traducciones.

Modificar o crear el buscador de WordPress

Para modificar o crear el buscador de WordPress, este dispone de una función: get_search_form(), esta función nos permite mostrar el formulario por defecto. Pero Wodpress también nos permite modificar este formulario por si es necesario aplicar otro aspecto, para ello debemos crear un archivo en la raiz de nuestro tema con el nombre: searchform.php. A partir de ahora WordPress mostrará el nuevo formulario que tengamos en el archivo anterior.

Dejo de ejemplo el formulario base que viene por defecto, pero adaptado para mostrarlo en el fichero searchform.php.

<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ) ?>">
    <label>
        <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
    </label>

    <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</form>

Shortcode mostrar últimas entradas – WordPress

//////////////////////////////////////////////////////////////////
// Name:			Mostrar entradas							//
// Version: 		2.0.0v										//
// Last updated:	3-12-2014									//
//////////////////////////////////////////////////////////////////
add_shortcode('mostrar_entradas', 'dgg_mostrar_entradas');
function dgg_mostrar_entradas($atts, $content = null) {
    $me_theme_textdomain = 'Avada';
    extract(shortcode_atts(array(
        'titulo' 		=> 'Últimas entradas',//Título del shortcode
        'cantidad' 		=> '3',//Número de entradas
    ), $atts));

    $mostrar_entradas = '<div id="mostrar_entradas">';
    $mostrar_entradas .= '<h2><span class="icon"></span><span>'.$titulo.'</span></h2>';

    query_posts( array(
        'blog' => 'wordpress',
        'posts_per_page' => $cantidad )
    );
    while( have_posts() ) : the_post();
        if( is_plugin_active('sitepress-multilingual-cms/sitepress.php') ){
            $me_link = get_permalink( icl_object_id(get_the_ID(), get_post_type(get_the_ID()), true) );
        } else{
            $me_link = get_permalink( get_the_ID() );
        }

        $mostrar_entradas .= 	'<div class="me_post">
										<div class="me_general">
											<div class="me_img">'.get_the_post_thumbnail( get_the_ID(), 'medium' ).'</div>
											<h2 class="me_titulo">'.get_the_title().'</h2>
											<div class="me_cont">'.limitePalabras( get_the_content(), 25 ).'</div>
											<div class="me_button_small me_button">
												<a href="'.$me_link.'">
													'.__('Seguir leyendo',$me_theme_textdomain).'
												</a>
											</div>
											<div class="me_cb"></div>
										</div>
									</div>';
    endwhile;

    $mostrar_entradas .= '</div>';
    wp_reset_query();

    return $mostrar_entradas;
}

Hooks – WordPress

Cuando activamos un plugin

register_activation_hook(   __FILE__, array( 'Name_class', 'activation_function' ) );

Cuando desactivamos un plugin

register_deactivation_hook( __FILE__, array( 'Name_class', 'desactivation_function' ) );

Cuando desinstalamos un plugin

register_uninstall_hook(    __FILE__, array( 'Name_class', 'uninstall_function' ) );

Las funciones de WordPress

WordPress dispone de un montón de funciones condicionales que nos permite conocer ciertos datos desde nuestros themes. Estas funciones son realmente útiles si queremos centralizar alguna funcionalidad sin tener que depender de otros ficheros o complicadas comprobaciones. Conocerlas nos ahorrarán un tiempo que podemos emplear en salir a pasea, que empieza a mejorar el tiempo.
Condiciones para:

Admin

Saber si estas en el admin

is_admin()

URL’s

Obtener dirección del template activo

get_template_directory_uri();

Obtener el directorio del template

get_template_directory()

Obtener link a una página a partir de su id

get_permalink( $idPost )

Obtener el link a una página si tu site es multiidioma con WPML

get_permalink( icl_object_id($idPost, 'page', true) )

Añadir javascript, añadir javascript a un widget

//Lo añade al footer
wp_enqueue_script( 'menu-cursos',
				   plugins_url().'/menu-cursos/menu-cursos.js' );

 


Plugins

Obtener dirección de la carpeta de plugins

plugins_url()

Comprobar si un plugin esta activo

is_plugin_active('directorio-plugin/archivo-plugin.php')

 


Imagenes

Obtener la url de la imagen a partir de la id del post

echo wp_get_attachment_url( get_post_thumbnail_id($post->ID));
echo wp_get_attachment_link( get_post_thumbnail_id($post->ID), 'medium' );

Saber si el post tiene imagen destacada

has_post_thumbnail()

Obtener la imagen destacada del post

/*
	thumbnail 	= Por Defecto 150px x 150px max
	medium 		= Por Defecto 300px x 300px max
	large 		= Por Defecto 640px x 640px max
	full 		= Tamaño Original
*/
get_the_post_thumbnail( get_the_ID(), 'thumbnail' )

get_the_post_thumbnail($post_id, array(100,100) ); // Otras resoluciones

// Obtenemos la ruta de la imagen destacada (tamaño completo)
global $post;
$thumbID = get_post_thumbnail_id( $post->ID );
$imgDestacada = wp_get_attachment_url( $thumbID );
// o escogiendo el tamaño de la imagen
$imgDestacada = wp_get_attachment_image_src( $thumbID, 'medium' ); // Podemos especificar el tamaño segun las medidas anteriores

Páginas / Posts

Obtener la id del post

get_the_ID()

Obtener el tipo del post

get_post_type(get_the_ID())

Saber si esta utilizando el template indicado

is_page_template('name_template.php');
is_front_page();
is_home();

Menú

Saber si existe un menu o no

wp_get_nav_menu_object('name_menu')

if( wp_get_nav_menu_object( VA_MENU_NAME ) ){
        $defaults = array(
            'theme_location'  => '',
            'menu'            => VA_MENU_NAME,
            'container'       => 'div',
            'container_class' => '',
            'container_id'    => '',
            'menu_class'      => 'menu',
            'menu_id'         => '',
            'echo'            => false,
            'fallback_cb'     => 'wp_page_menu',
            'before'          => '',
            'after'           => '',
            'link_before'     => '',
            'link_after'      => '',
            'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
            'depth'           => 0,
            'walker'          => ''
        );

        $va_menu = wp_nav_menu( $defaults );
    } else{
        $va_error['msg'] = "Necesita crear el menu con el nombre: ".VA_MENU_NAME;
        $va_error['type'] = "error";
    }

Configuración:

Obtener el email del administrador de la web

Para poder gestionar este correo debemos ir a “Ajustes=>Generales”.

get_option('admin_email')

Un post “single”
is_single()
Nos indica si estamos en un post “single”
is_single(’17’)
Nos indica si estamos en el post “single” con id “17″
is_single(‘Beef Stew’)
Nos indica si estamos en el post “single” con el título “Beef Stew”
is_single(‘beef-stew’)
Nos indica si estamos en el post “single con el post slug “beef-stew”
Cualquier página con comentarios

comments_open()
Nos indica si tenemos los comentarios abiertos y podemos comentar.Requiere estar en el WordPress Loop.
pings_open()
Nos indica si tenemos los pings abiertos y podemos recibirlos.Requiere estar en el WordPress Loop.
Una página
Cuando escribimos un post podemos elegir entre post o página, estas opciones se refieren a este tipo de entradas.
is_page()
Cuando estamos en una página
is_page(’42’)
Cuando estamos en una página con ID 42
is_page(‘About Me’)
Cuando estamos en una página con el título “About Me”
is_page(‘about-me’)
Cuando estamos en una página con el page slug about-me”
Por desgracia, wordpress no dispone de una función is_subpage(), pero tenemos una solución para esta carencia.
if(get_the_title($post->post_parent) != the_title(‘ ‘ , ‘ ‘,false)) { echo “This is a subpage”; }
Determina si la página tiene padre, si es asi nos mostrará el texto por pantalla.
En categorias

is_category()
Nos indica que estamos viendo una categoría
is_category(‘6’)
Nos indica que estamos viendo una categoría con ID 6
is_category(‘Cheeses’)
Nos indica que estamos viendo una categoría con Nombre “Cheeses”
is_category(‘cheeses’)
Nos indica que estamos viendo una categoría con category slug “cheeses”
in_category(‘5’)
Nos indica si un post está dentro de la categoría con ID . Muy util para por ejemplo los asides.
En Autores
Las páginas de autores son las que se encuentra en authors.php.
is_author()
Nos indica si estamos viendo una página de autor
is_author(‘1337’)
Nos indica si estamos viendo una página de autor con ID 1337
is_author(‘Elite Hacker’)
Nos indica si estamos viendo una página de autor con Nickname “Elite Hacker”
is_author(‘elite-hacker’)
Nos indica si estamos viendo una página de autor con Nicename “elite-hacker”
En Fecha
Cuando estamos buscando por fecha, mediante el calendario (por ejemplo).
is_date()
Nos indica si estamos buscando por cualquier tipo de fecha
is_year()
Nos indica si estamos buscando por fechas según un año
is_month()
Nos indica si estamos buscando por fechas según un mes
is_day()
Nos indica si estamos buscando por fechas según un día
is_time()
Nos indica si estamos buscando por fechas según un una hora, minuto o segundo.
En Archivos
is_archive()
Nos indica si estamos mostrando algún tipo de archivo (Categorias, Autores, Fechas,..)
Página de resultados

is_search()
Nos indica si hemos realizado una busqueda
404 Not Found Page
is_404()
Nos indica si nos encontramos la página 404.
Página páginada

is_paged()
Nos indica si estamos usando

Como crear un plugin con administración – WordPress

<?php
/*
Plugin Name: DGG Sidebars
Plugin URI: #
Description: Create and manage your sidebars
Author: Daniel Guerrero
Version: 0.1
*/

/**
 * Muestra un menu en el admin de wordpress
 *
 * - nombre del hook de WordPress
 * - nombre de la funcion a la que llama
 */
add_action('admin_menu', array('DGGSidebars','admin_menu'));

class DGGSidebars{
    /**
     * Genera el menu de administracion del plugin
     */
    function admin_menu() {
        /**
         * Añade el menu al menu de administracion de WordPresss
         *
         * add_menu_page ( $page_title , $menu_title , $capability , $menu_slug , $function , $icon_url , $position )
         */
        add_menu_page("DGG Sidebars", "DGG Sidebars", 1, "dgg_sidebars", array('DGGSidebars',"home_admin"));

        /**
         * Añade un submenu al menu principal
         *
         * add_submenu_page ( $parent_slug , $page_title , $menu_title , $capability , $menu_slug , $function )
         */
        add_submenu_page('dgg_sidebars', 'DGG Sidebars Sub', 'Sub', 1, 'dgg_sidebars_sub', array('DGGSidebars','home_sub_admin'));
    }

    function home_admin(){
        echo "Pagina de inicio del admin";
    }

    function home_sub_admin(){
        echo "sub pagina";
    }
}
?>