Las funciones mas usadas en WordPress

Crear taxonomías a medida

Las taxonomías son útiles cuando tenemos que asignar algunas características comunes a ciertos post, asi de forma sencilla podemos escoger ciertos valores especificos asi como si fuera un tag.

// === TAXONOMIAS A MEDIDA === //
function mis_taxonimias_a_medida() {
	register_taxonomy(
		'tecnologia',		// nombre interno = nombre de las taxonomia para las máquinas
		'trabajos',		// Objeto relacionado = post, página, link, or tipos de post a medida
		array(
			'hierarchical' => true,
			'label' => 'Tecnologias empleadas',	// Nombre a mostrar
			'query_var' => true,	// habilitar las busquedas por taxonomia
			'rewrite' => array( 'slug' => 'trabajos-por-tecnologia' ),	// enlace permanente slug.
		)
	);
	register_taxonomy(
		'portfolio-categorias',
		'trabajos',
		array(
			'hierarchical' => false,
			'label' => 'Categorías para trabajos',
			'query_var' => true,
			'rewrite' => array( 'slug' => 'trabajos-portfolio' ),
		)
	);
 
	register_taxonomy(
		'agencias',
		'trabajos',
		array(
			'hierarchical' => false,
			'label' => 'Agencias',
			'query_var' => true,
			'rewrite' => array( 'slug' => 'trabajos-agencias' ),
		)
	);
 
 
}
add_action('init', 'mis_taxonimias_a_medida', 0);

Crear nuestros post a medida

Con la siguiente funcion podemos crear un post a medida, nos aparece en el menu de la izquierda dentro del panel de control de WordPress, en este caso lo creamos con las taxonomías a mediad. Este es el que uso para crear mi portfolio.

// === POST A MEDIDA === //
function crear_post_a_medida() {
	register_post_type( 'trabajos',
		array(
			'labels' => array(
				'name' => __( 'Trabajos' ),
				'singular_name' => __( 'trabajo' ),
				'add_new_item' => 'Añadir Trabajo',
				'edit_item' => 'Editar Trabajo',
				'new_item' => 'Nuevo Trabajo',
				'search_items' => 'Buscar Trabajos',
				'not_found' => 'No se han encontrado trabajos',
				'not_found_in_trash' => 'No hay ningun trabajo en la papelera',
			),
			'_builtin' => false,
			'public' => true,
			'hierarchical' => false,
			'taxonomies' => array( 'tecnologia', 'portfolio-categorias'),
			'supports' => array(
				'title',
				'editor',
				'excerpt'
			),
			'rewrite' => array( 'slug' => 'trabajos', 'with_front' => false )
		)
	);
}
add_action( 'init', 'crear_post_a_medida' );

Añadir metaboxes a medida

Con la siguiente funcion podemos crear metaboxes, que son campos personalizados dentro de post a medida, páginas o post en general, necesitamos dos funciones extras, la que nos muestra el campo editable dentro del panel de control y el que guarda los datos en la base de datos.

// === META BOXES A MEDIDA === //
function meta_boxes_a_medida(){
	$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
	// Podemos llamarlo por el post_ID
	if ($post_id == '111184')	{
		add_meta_box('nombre_del_meta_box', 'Nombre a mostar del meta box', 'meta_boxes_a_medida_print', 'page', 'normal', 'high');
	}
	$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
	// Llamamamos segun la plantilla que estemos usando
	if ($template_file == 'page.php' )	{
		add_meta_box('page_primarytext', 'Título de la página','meta_boxes_a_medida_page', 'page', 'normal', 'high');
		add_meta_box('page_secondarytext', 'Sub-título de la página','meta_boxes_a_medida_page', 'page', 'normal', 'high');
		add_action('save_post', array(&$this,'salvar_metaboxes_a_medida_pages') );
	}
	// tambien podemos añadirlos a nuestros tipos de post a medida a meta box for custom page types, en un array
	foreach (array('trabajos','post') as $type)
	{
		add_meta_box('imagen_principal', 'imagen principal','meta_boxes_a_medida_imagen', $type, 'normal', 'high');
		add_action('save_post','salvar_metaboxes_a_medida_trabajos');
	}
 
}
add_action( 'add_meta_boxes', 'meta_boxes_a_medida' );
 
// === MOSTRAMOS LAS BOXES A MEDIDA EN EL FORMULARIO === //
function meta_boxes_a_medida_page( $post ) {
  // Use nonce for verification
  wp_nonce_field( plugin_basename( __FILE__ ), 'trabajos_noncename' );
  // The actual fields for data entry
  echo '<label for="page_primarytext">Titulo de la Página</label> ';
  echo '<input type="text" id="page_primarytext" name="page_primarytext" value="" size="45" />';
  echo '<label for="page_primarytext">Sub-Titulo de la Página</label> ';
  echo '<input type="text" id="page_secondarytext" name="page_secondarytext" value="" size="45" />';
}
 
// === GUARDAMOS LOS METABOXES EN LA BASE DE DATOS === //
function salvar_metaboxes_a_medida_pages( $post_id ) {
	global $meta_box;
	// Verificamos si viene de un autosave  // si no hemos dado a guardar datos, no hacemos nada.
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
	  return;
	// verificamos que proviene de nuestra ventana y los permisos de los usuarios.
	if ( !wp_verify_nonce( $_POST['trabajos_noncename'], plugin_basename( __FILE__ ) ) )
	  return;
	// Check permissions
	if ( 'page' == $_POST['post_type'] )   {
	if ( !current_user_can( 'edit_page', $post_id ) )
		return;
	}  else  {
	if ( !current_user_can( 'edit_post', $post_id ) )
		return;
	}
  	// OK, estamos dentro y lso permisos vienen bien, guardamos.
 
	foreach ($meta_box['fields'] as $field) {
        $old = get_post_meta($post_id, $field['id'], true);
        $new = $_POST[$field['id']];
 
        if ($new && $new != $old) {
            update_post_meta($post_id, $field['id'], $new);
        } elseif ('' == $new && $old) {
            delete_post_meta($post_id, $field['id'], $old);
        }
    }
 
}

4 respuestas a «Las funciones mas usadas en WordPress»

  1. Unfortunately, again, I can’t find any way to get the feed for multiple post type. you can set up the sndatard feed to get all post types, including post’with a filter in your functions.php file :

    add_filter( pre_get_posts’, my_get_posts’ );

    function my_get_posts( $query ) {
    if (is_feed()) $query->set( post_type’, array( post’, mycustomtype’, anothercustomtype’ ) );
    return $query;
    }

    Hope it will help

  2. Hola, este es un de los mejores tutoriales que he visto, aunque tengo una duda

    yo quiero crear por ejemplo entradas personalizadas llamada “Noticias” que contenga 3 categorias

    Noticias

    Cultura

    Tecnologia

    Entretencion

    _________________

    La idea es que cuando el “editor” entre a alguna de las
    categorias en este caso a cultura, pueda crear la noticia rapidamente
    (sin agregar metatag, ni elegir categorias) la idea es que el enlace
    permanente sea

    wwww.miweb.com/noticias/cultura/nombre-de-la-entrada

    Es posible?

    Atento a los comentarios

    1. No se si eres familiar con la administracion de wordpress, pero al dar de alta una «Noticia» hay que asignarle algun tipo de taxonomia, en este caso Cultura, Tecnologia, Entretenimiento.

      Lo que se puede hacer es usar un hook para la funcion de guardar un custom post en este caso Noticias, miremos la configuracion de usuario y segun el role le podemos marcar a mano la categoria en la que el usuario este como editor.

      Tiene un poco de trabajo pero si se podria.

      1. Atentamente,

        «Este mensaje y los posibles documentos adjuntos al mismo son CONFIDENCIALES y dirigidos exclusivamente a los destinatarios de los mismos. Si por un error, de envio o de transmision, ha recibido este mensaje y no es el destinatario, por favor, notifiqueselo al remitente y no use, informe, distribuya, imprima, copie o difunda este mensaje por ningun medio. No asumimos responsabilidad legal ni de ningun otro tipo por el contenido de este mensaje. Cualquier opinión transmitida pertenece solo al autor y no representa necesariamente la opinion de la firma salvo que expresamente se especifique lo contrario». Generado por Sunnyface.com para http://www.stevia-espana.com Antes de imprimir piensa en el medio ambiente.

Los comentarios están cerrados.