Skip to content

Options Page em Thema WordPress – Como criar

fevereiro 22, 2012

Including a Theme Options page for your theme is one of the best ways to increase ease-of-use for managing a complex theme. However, a few quick Google searches later and most people give up. Such a great inclusion for theme design appears to have such little documentation, that it appears to be one of those heavily guarded secrets which only the crème de la crème of designers hold the key to.

In this article we will be incorporating an options panel for the ‘WordPress Classic’ theme. The methods you learn will allow you to very easily integrate it into an existing theme you’re working on.

 

Firstly, I’d like to give heaps of credit to this post at The Undersigned. A lot of the code used in this tutorial is from their post. I’m simply building on the foundation they provided – Thanks!

What we’ll be making is a section at the top of the ‘Classic’ WordPress theme to display a welcome message. This message will be customizable from an options page in the Dashboard:

 

Veja mais em: http://blog.themeforest.net/wordpress/create-an-options-page-for-your-wordpress-theme/

add_action add_filter

dezembro 21, 2011

Hooks: Actions e Filters

Classes e Funções usadas: 

Categoria: Codex | Nenhum comentário

Um importante recurso a ser explorado para o desenvolvimento de soluções no WordPress é a utilização dosHooks que o sistema disponibiliza. Os Hooks são certas funções e identificadores que servem como ganchos (dada sua nomenclatura) para execução de instruções personalizadas. Significa dizer que através do uso dos hooks é possível informar ao sistema quando e como ele deve chamar determinada função.

Existem dois tipos de ganchos oferecidos pelo WordPress: Actions e Filters. As Actions, são ações executadas em determinados momentos pelo sistema; são atividades executadas mediante o disparar de um evento, como por exemplo o publicar de um post.

Os Filters, são os filtros da informação; através de suas aplicações o desenvolvedor consegue modificar ou como o próprio nome diz, filtrar os dados enviados pelo usuário ou resgatados do banco de dados antes que estes sejam exibidos ou armazenados.

Motivos para utilização dos Hooks

Em alguns casos quando se faz necessário alterar o modo de funcionamento do WordPress, é comum desenvolvedores realizarem tais alterações diretamente no código-fonte do CMS. No entanto essa prática é pouco recomendada, pois assim que o sistema for atualizado é bem provável que as alterações se percam e tenham que ser realizadas novamente. Usar os ganchos do WordPress é um jeito seguro de alterar o comportamento e as atividades executadas pela ferramenta.

A própria programação do sistema é realizada em grande parte com base nos Hooks. Veja por exemplo a utilização das Include Tags que se baseiam nesse princípio, assim como a incorporação de scripts ao WordPress que ocorre em razão do uso de ganchos.

Actions – Eventos do WordPress

Para adicionar ações ao WordPress é preciso fazer uso da função add_action via programação PHP com os seguintes parâmetros:

add_action ( 'nome_do_gancho', 'sua_funcao', [prioridade], [argumentos_aceitos] );
  • Nome do gancho – Um evento fornecido pelo sistema (veja a Referência de ações no Codex), a ele será incorporada sua função;
  • Sua função – Ao disparar do referido evento, a função aqui atribuída será executada;
  • Prioridade – Determina a ordem de execução das funções associadas ao gancho, por padrão seu valor é 10. Números menores são executados primeiro, e em caso de valores iguais respeita-se a ordem de adição das funções;
  • Argumentos aceitos – Número inteiro que determina a quantidade de argumentos a serem passados para a função, possui valor 1 como padrão.

Estilo personalizado para a tela de login

Em um exemplo de aplicação, é possível editar a tela de login do seu template incorporando uma folha de estilo específica na página de entrada do sistema mediante o uso de:

function add_login_style() {
	wp_enqueue_style( 'login' );
}
add_action( 'login_head', 'add_login_style' );

Os parâmetros Prioridade e Argumentos aceitos são opcionais, caso não os informe, os valores padrões serão adotados para a ação criada.

Filters – Filtrando informação

De maneira semelhante a incorporação de ações ao sistema, para se incluir um filtro a ele é preciso fazer uso da função add_filter e seus respectivos parâmetros:

add_filter ( 'nome_do_gancho', 'sua_funcao', [prioridade], [argumentos_aceitos] );

Uma grande diferença na função a ser utilizada é que ela deverá possuir um valor de retorno ou de impressão usando os recursos return ou echo do PHP, por exemplo. Assim como para as Actions, os valores Prioridade eArgumentos aceitos da função que adiciona os Filters, são opcionais.

Alterando a exibição do conteúdo

Para demonstrar a utilização dos filtros, o exemplo abaixo irá suprimir todas as tags HTML do conteúdo dos posts resgatados antes de exibí-los para o visitante:

function content_only_text( $content ) {
	return strip_tags( $content );
}
add_filter( 'the_content', 'content_only_text' );

Fonte: http://www.guiawp.com.br/codex/hooks-actions-filters/

=================================================

=================================================

=================================================

Michael Fields

Hi Betsy, I hope this explains everything!

So, are filters a subset of actions?

They are basically the same function applied to different contexts. If you take a peek into the core, you will see that add_action is actually a wrapper function for add_filter:

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) { return add_filter($tag, $function_to_add, $priority, $accepted_args); }

it seems I could use an action to change the text of the post for instance, instead of a filter?

Actually, you would use a filter for this situation. Let’s pretend that WordPress is a Mexican restaurant and we have ordered a taco as illustrated by the following code…

<?php $taco = 'chicken'; ?>

Basically, we have no choice… we will always be served a chicken taco. However, the same expression could be stated using the apply_filters() function. It is like ordering a taco and having the server ask you “well what kind of taco would you like?”

<?php $taco = apply_filters( 'get_taco', 'chicken' ); ?>

The above code gives us access to the type of taco that we would like to have served. We can create a function which hooks into WordPress an changes the default value of$taco.

<?php add_filter( 'get_taco', 'my_special_order' ); function my_special_order( $content ) { return 'shredded beef'; } ?>

By adding the above code to you theme’s functions.php file or to a custom plugin, you are able to change the value of the variable $taco to whatever you like. Notice that the function “my_special_order” accepts one value. In this situation the value of$content is equal to the value of the second argument passed to the apply_filters() function. In this example it would be “chicken”.

<?php add_filter( 'get_taco', 'my_special_order' ); function my_special_order( $content ) { return $content . ' and avocado'; } ?>

The above code appends a string to the end of “chicken” resulting in a value of “chicken and avocado”.

what would be a good example of correctly using filters while actions would be inappropriate for the situation?

Basically, there usually is no choice for a plugin or theme developer as to which method they can use. The WordPress core is filled with calls to apply_filters() anddo_action(). If I need to change the value of a piece of data, I will search through the core until I locate the file where that data is defined and see if it is possible to filter it’s value.

If I need to do something at a certain time, I will look for calls to the do_action() hook. A simple example would be if I wanted to print custom css to the head of the document. I could easily add the following code to my theme’s functions.php file:

<?php add_action( 'wp_head', 'print_my_custom_scripts' ); function print_my_custom_scripts(){ print '<style type="text/css">.red{color:#f00;}</style>'; } ?>

Notice how this time, the function did not return a value – it did something -> it printed text to the browser.

Filters change data while actions allow us to do stuff.

when should I use an action and when a filter?

You would want to use an action where you need to do something at a certain point in time… add options to the database or print css or javascript.

You should use a filter where you would want to alter the value of some data that WordPress has passed through the apply_filters() function.

do the ‘hooks’ for actions and filters overlap? -can I add a either a filter or an action to the same hook?

Actually, both filters and actions are hooks. That being said, the answer is “no”.

http://wordpress.org/support/topic/fliters-vs-actions-from-a-newbe

Formato em português da hora e data no WordPress

novembro 17, 2011

Tutorial do formato em português da hora e data no WordPress

Sem muita enrolação vou explicar nesse tutorial quais são os formatos de hora aceitos no WordPress que segue o padrão do PHP e dar alguns exemplos para facilitar a vida das pessoas que, como eu, se enrolaram todas para conseguir informação tão simples.

Data
d – Dia do mês, 2 dígitos com zero
D – Apresentação em texto do dia com três letras
j – Dia do mês sem zero
l (letra L minúscula) – Apresentação por extenso do dia da semanarepresentation
F – Apresentação por extenso do dia do mês
m – Apresentação numérica do mês, com zero
M – Apresentação abreviada do mês com três letras
n – Apresentação numérica do mês, sem zero
Y – Apresentação completa do ano, com quatro dígitos
y – Apresentação curta do ano, com dois dígitos

Hora
a – Mostra am/pm em letras minúsculas
A – Mostra AM/PM em letras maiúsculas
g – Formato 12 horas sem zeros
G – Formato 24 horas sem zeros
h – Formato 12 horas com zeros
H – Formato 24 horas com zeros
i – Minutos com zeros
s – Segundos com zeros

Para alterar a forma como a data e hora são exibidas no seu blog, no menu da administração, clique em “Opções”, depois em “Geral”.

Procure uma caixa chamada “Formato de hora predefinido” e coloque sua formatação, conforme seu gosto.

Após clique no botão “Atualizar Opções” no final da página.

Bom, no meu caso essa explicação não funcionou!

Tive que alterar diretamente nos arquivos archive.phpindex.php e single.php.

Localizei a linha com o codigo abaixo:

<”?php the_time(…”>

dependendo do layout, o código pode variar e substituí por este:

<?php the_time(__(‘j \d\e F \d\e Y’, ‘kubrick’)) ?>

deixando o formato assim: 20 de abril de 2009.

Alguns exemplos de data:
D d M Y – esta formação resulta em: Dom 18 Nov 2007
l d F Y – esta formação resulta em: Domingo 18 Novembro 2007
j \d\e F \d\e Y – esta formatação resulta em: 18 de Novembro de 2007
d/m/Y – esta formação resulta em: 18/11/2007
d-m-Y – esta formação resulta em: 18-11-2007

Alguns exemplos de hora:
g:i a – esta formação resulta em: 8:30 am
h:i a – esta formação resulta em: 08:30 am
g-i A – esta formação resulta em: 8-30 AM

Créditos: radboxdocs

Publicado em 20 de abril de 2009. Autor do artigo: Denis F. Moreia

Personalizar Dashboard Widgets

agosto 1, 2011

Para customizar a página inicial do Painel, chamada de Dashboard Widgets,
use o seguinte:

// disable default dashboard widgets
function disable_default_dashboard_widgets() {

remove_meta_box(‘dashboard_right_now’, ‘dashboard’, ‘core’);
remove_meta_box(‘dashboard_recent_comments’, ‘dashboard’, ‘core’);
remove_meta_box(‘dashboard_incoming_links’, ‘dashboard’, ‘core’);
remove_meta_box(‘dashboard_plugins’, ‘dashboard’, ‘core’);

remove_meta_box(‘dashboard_quick_press’, ‘dashboard’, ‘core’);
remove_meta_box(‘dashboard_recent_drafts’, ‘dashboard’, ‘core’);
remove_meta_box(‘dashboard_primary’, ‘dashboard’, ‘core’);
remove_meta_box(‘dashboard_secondary’, ‘dashboard’, ‘core’);

}

add_action(‘admin_menu’, ‘disable_default_dashboard_widgets’);

Do jeito que está acima, a ação ocorrerá para TODOS os usuários. Se quiser
customizar para um grupo de usuários específico ou para um usuário em
específico, use a função abaixo como base…. Sendo que “manage_options” é
uma função administrativa… Depois estude mais sobre as funções (Roles &
Capabilities)

if (!current_user_can(‘manage_options’)) {
add_action(‘wp_dashboard_setup’,
‘disable_default_dashboard_widgets’);

}

outro exemplo:

Efetuarei a customização apenas pros usuários “Editores”:

if (current_user_can(‘editor’)) {        add_action(‘wp_dashboard_setup’,
‘disable_default_dashboard_widgets’);

}

Exemplos acima retirados do seguinte link:
http://digwp.com/2010/10/customize-wordpress-dashboard/

Outro link interessante:

http://www.catswhocode.com/blog/10-wordpress-dashboard-hacks

No link acima, há como remover alguns menus do painel.

Fonte: Drika(Lista WordPress Brasil)

Destaques nos posts/pages

julho 23, 2011

Muito útil para  para atribuir características diferenciadas a um post qualquer. Ex: marcar um post como “Destaque”

Neste caso vamos adicionar um box com alguns radios abaixo da caixa do editor de texto do wordpress.

PARTE 1

Supondo que colocamos o código num arquivo “/lib/destaques.php” será preciso dar carga no mesmo, incluindo uma linha no arquivo “functions.php” do seu tema. A linha será

“require_once(STYLESHEETPATH.’/lib/destaques.php’);”

O código abaixo cuida do box.

add_action(‘admin_menu’, ‘rpbr_add_inpost_box_destaque’);

function rpbr_add_inpost_box_destaque() {
add_meta_box(‘rpbr_inpost_box_destaque_page‘, ‘Destaque da página inicial‘, ‘rpbr_inpost_box_destaque‘, ‘page‘, ‘normal’, ‘high’);
add_meta_box(‘rpbr_inpost_box_destaque_post‘, ‘Destaque da página inicial‘, ‘rpbr_inpost_box_destaque‘, ‘post‘, ‘normal’, ‘high’);
}

O próximo código cuida da criação do conteúdo dos boxs, ou seja, cria os radios.

function rpbr_inpost_box_destaque() { ?>
<?php wp_nonce_field( plugin_basename(__FILE__), ‘rpbr_inpost_destaque_nonce’ ); ?>
<?php $_rpbr_destaque = rpbr_get_custom_field(‘_rpbr_destaque’); ?>
<br style=”clear: both;” />
<input type=”radio” name=“_rpbr_destaque” id=”rpbr_destaque” value=”ok_principal” <?php checked(‘ok_principal’, rpbr_get_custom_field(‘_rpbr_destaque’));?> />Destaque Principal &nbsp; &nbsp; &nbsp;
<input type=”radio” name=”_rpbr_destaque” id=”rpbr_destaque” value=”ok” <?php checked(‘ok’, rpbr_get_custom_field(‘_rpbr_destaque’));?> />Destaque Menor  &nbsp; &nbsp; &nbsp;
<input type=”radio” name=”_rpbr_destaque” id=”rpbr_destaque” value=”” <?php checked(”, rpbr_get_custom_field(‘_rpbr_destaque’));?> />Nenhum Destaque
<br style=”clear: both;” />
<?php
}

Para terminar, uma ação que salva o radio selecionado, sempre que a página/post for salvo.

add_action(‘save_post’, ‘rpbr_inpost_destaque_save‘, 1, 2);
function rpbr_inpost_destaque_save($post_id, $post) {

//    verify the nonce
if ( !isset($_POST[‘rpbr_inpost_destaque_nonce’]) || !wp_verify_nonce( $_POST[‘rpbr_inpost_destaque_nonce’], plugin_basename(__FILE__) ) )
return $post->ID;

//    don’t try to save the data under autosave, ajax, or future post.
if ( defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE ) return;
if ( defined(‘DOING_AJAX’) && DOING_AJAX ) return;
if ( defined(‘DOING_CRON’) && DOING_CRON ) return;

//    is the user allowed to edit the post or page?
if ( (‘page’ == $_POST[‘post_type’] && !current_user_can(‘edit_page’, $post->ID)) || !current_user_can(‘edit_post’, $post->ID ) )
return $post->ID;

$rpbr_destaque_value = $_POST[‘_rpbr_destaque‘];

if ( $rpbr_destaque_value ) {
//    save/update
update_post_meta($post_id, ‘_rpbr_destaque‘, $rpbr_destaque_value);
} else {
//    delete if blank
delete_post_meta($post_id, ‘_rpbr_destaque‘);
}

}

FIM DA PRIMEIRA PARTE

PARTE 2

A parte 2 diz respeito a exibição das publicações marcadas como destaque.

O valor do radio selecionado é gravado como uma meta_key do post/page.

Desta forma é possível filtrar consultas.

O código abaixo pega a última publicação marcada como destaque principal:

$args = array(‘post_type’ => ‘any’,
‘showposts’ => 1,
‘orderby’=>’date’,
‘meta_key’=>’_rpbr_destaque‘,
‘meta_value’=>’ok_principal‘,
‘post_status’ => ‘publish’,
‘post__not_in’ => get_option( ‘sticky_posts’ ));
$recent = new WP_Query($args);

O código abaixo pega as últimas 6 publicações marcadas como destaque:

$args = array (
‘post_type’ => ‘any’,’
showposts’ => 6,
‘orderby’=>’date’,
‘meta_key’=>‘_rpbr_destaque’,
‘meta_value’=>’ok‘,
‘post_status’ => ‘publish’,
‘post__not_in’ => get_option( ‘sticky_posts’ ));
$recent = new WP_Query($args);

PASSO 3

No caso acima, o destaque principal pode aparecer no post associado a uma imagem. Neste caso, é interessante adicionar ao function.php do seu tema, o seguinte:

add_image_size( ‘destaque-principal’, 340, 230 );//destaque principal, home

Para finalizar, no corpo da página onde a chamada ao destaque principal será exibida, você coloca:

<div>
<?php if ( has_post_thumbnail() ) { ?> <a href=”<?php the_permalink(); ?>”><?php the_post_thumbnail( ‘destaque-principal’ ); ?></a> <?php } ?>
</div>

 

FUNÇÕES ÚTEIS

function rpbr_custom_field($field) {
echo rpbr_get_custom_field($field);
}
function rpbr_get_custom_field($field) {
global $post;

if ( null === $post ) return FALSE;

$custom_field = get_post_meta($post->ID, $field, true);

if ( $custom_field ) {
// sanitize and return the value of the custom field
return wp_kses_stripslashes( wp_kses_decode_entities( $custom_field ) );
}
else {
// return FALSE if custom field is empty
return FALSE;
}
}

10 ótimos shortcodes para WordPress

outubro 12, 2010

CTRL+C,CTRL+V from http://imasters.com.br/artigo/15146/wordpress/10_otimos_shortcodes_para_wordpress

Os shortcodes do WordPress foram introduzidos na versão 2.5. Estes códigos são uma forma muito simples de ‘puxar’ a informação desejada, recorrendo a poucas linhas de código. Neste artigo, vou mostrar-lhe os 10 shortcodes mais incríveis para WordPress, que você poderá começar a utilizar imediatamente no seu blog!

01. Apresentar artigos relacionados

Os artigos relacionados são uma forma muito eficiente de manter os leitores por mais tempo no seu blog, ocupados com a visitação de novas páginas constantemente. Isso aumenta o número de páginas vistas gradualmente, ao mesmo tempo que aumenta o potencial de rentabilidade do seu blog. Existem dezenas de plugins para executar esta função, mas por que não utilizar um shortcode que o faça automaticamente?

   function related_posts_shortcode( $atts ) {
    extract(shortcode_atts(array(
    'limit' => '5,
    ), $atts));

    global $wpdb, $post, $table_prefix;

    if ($post->ID) {
    $retval = '<ul>';
    // Get tags
    $tags = wp_get_post_tags($post->ID);
    $tagsarray = array();
    foreach ($tags as $tag) {
    $tagsarray[] = $tag->term_id;
    }
    $tagslist = implode(',', $tagsarray);

    // Do the query
    $q = "SELECT p.*, count(tr.object_id) as count
    FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id  = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID
    AND p.post_status = 'publish'
    AND p.post_date_gmt < NOW()
    GROUP BY tr.object_id
    ORDER BY count DESC, p.post_date_gmt DESC
    LIMIT $limit;";

    $related = $wpdb->get_results($q);
    if ( $related ) {
    foreach($related as $r) {
    $retval .= '<li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>';
    }
    } else {
    $retval .= '
    <li>Nenhum artigo relacionado encontrado</li>';
    }
    $retval .= '</ul>';
    return $retval;
    }
    return;
    }
    add_shortcode('related_posts', 'related_posts_shortcode');

Código de utilização:

 [related_posts]

02. Apresentar um gráfico Google

A Google Chart API é, provavelmente, a ferramenta mais interessante da internet para apresentar gráficos dinâmicos em páginas e blogs. Aqui fica um shortcode para tornar essa utilização ainda mais simples no seu blog WordPress:

    function chart_shortcode( $atts ) {
    extract(shortcode_atts(array(
    'data' => ",
    'colors' => ",
    'size' => '400×200,
    'bg' => 'ffffff',
    'title' => ",
    'labels' => ",
    'advanced' => ",
    'type' => 'pie'
    ), $atts));

    switch ($type) {
    case 'line' :
    $charttype = 'lc'; break;
    case 'xyline' :
    $charttype = 'lxy'; break;
    case 'sparkline' :
    $charttype = 'ls'; break;
    case 'meter' :
    $charttype = 'gom'; break;
    case 'scatter' :
    $charttype = 's'; break;
    case 'venn' :
    $charttype = 'v'; break;
    case 'pie' :
    $charttype = 'p3; break;
    case 'pie2d' :
    $charttype = 'p'; break;
    default :
    $charttype = $type;
    break;
    }

    if ($title) $string .= '&chtt='.$title.";
    if ($labels) $string .= '&chl='.$labels.";
    if ($colors) $string .= '&chco='.$colors.";
    $string .= '&chs='.$size.";
    $string .= '&chd=t:'.$data.";
    $string .= '&chf='.$bg.";

    return '<img title="'.$title.'" src="http://chart.apis.google.com/chart?cht='.$charttype.".$string.$advanced.'" alt="'.$title.'" />';
    }
    add_shortcode('chart', 'chart_shortcode');

Código de utilização:

    [chart data="41.52,37.79,20.67,0.03" bg="F7F9FA" labels="Reffering+sites|Search+Engines|Direct+traffic|Other" colors="058DC7,50B432,ED561B,EDEF00" size="488x200" title="Traffic Sources" type="pie"]

03. Integrar anúncios no AdSense

O Adsense é, provavelmente, a forma mais simples e eficaz de rentabilizar um website ou um blog. Utilizando widgets, é relativamente simples colocar anúncios Adsense no seu blog. No entanto, a melhor forma de rentabilizar um blog é, seguramente, utilizando Adsense dentro dos seus posts. Este processo torna-se extremamente simples e mágico, recorrendo aos shortcodes para WordPress. Vejamos:

  function showads() {
    return '<script type="text/javascript"><!
    google_ad_client = "pub-3637220125174754;
    google_ad_slot = "4668915978;
    google_ad_width = 468;
    google_ad_height = 60;
    //>
    </script>
    <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    ';
    }

    add_shortcode('adsense', 'showads');

Código de utilização:

    [adsense]  

04. Mostrar conteúdo privado para membros premium

Cada vez mais os blog e blogueiros adotam os chamados ‘conteúdos premium’, onde determinados grupos de usuários têm de pagar para ter acesso a conteúdos privilegiados. Sabe como apresentar conteúdos premium apenas para os seus ‘usuários premium’? Utilize este shortcode:

    function access_check_shortcode( $attr, $content = null ) {
    extract( shortcode_atts( array( 'capability' => 'read' ), $attr ) );
    if ( current_user_can( $capability ) && !is_null( $content ) && !is_feed() )
    return $content;

    return 'Desculpe, apenas membros registados podem ter acesso a estes conteúdos.';
    }

    add_shortcode( 'access', 'access_check_shortcode' );

Código de utilização:

    [access capability="switch_themes"]

05. Como integrar seus conteúdos de RSS feed

Entre outras coisas fantásticas, o WordPress tem um leitor de RSS Feeds integrado no seu código, que possibilita a leitura dos feeds no painel de controle do blog wordpress. No entanto, recorrendo a um shortcode, é possível colocar esses mesmos RSS Feeds onde você desejar, incluindo nos seus posts.

    //This file is needed to be able to use the wp_rss() function.
    include_once(ABSPATH.WPINC.'/rss.php');

    function readRss($atts) {
    extract(shortcode_atts(array(
    "feed" => 'http://',
    "num" => '1,
    ), $atts));

    return wp_rss($feed, $num);
    }

    add_shortcode('rss', 'readRss');

Código de utilização:

    
  • Ocorreu um erro. É provável que o feed esteja indisponível. Tente mais tarde.

06. Encurtar um endereço URL para o twitter

Uma das vantagens que o Twitter tem é de utilizar no seu código o core da TinyURL para encurtar os endereços URL presentes nos posts dos seus usuários. No entanto, é possível facilitar a vida dos leitores com um shortcut que faça isso automaticamente:

function subzane_shorturl($atts) {
extract(shortcode_atts(array(
'url' => ",
'name' => ",
), $atts));
$request = 'http://u.nu/unu-api-simple?url=' . urlencode($url);
$short_url = file_get_contents($request);
if (substr($short_url, 0, 4) == 'http')    {
$name = empty($name)?$short_url:$name;
return '<a href="'.$short_url.'">'.$name.'</a>';
} else {
$name = empty($name)?$url:$name;
return '<a href="'.$url.'">'.$name.'</a>';
}
}
add_shortcode('shorturl', 'subzane_shorturl');

Código de utilização:

[shorturl name="shortcode" url="http://codex.wordpress.org/Shortcode_API"]

07. Apresente a última imagem anexada a um post

Em vez de utilizar custom fields ou endereços URL para puxar as imagens anexadas aos seus posts, por que não recorrer a um shortcode que o faça automaticamente?

function sc_postimage($atts, $content = null) {
extract(shortcode_atts(array(
"size" => 'thumbnail',
"float" => 'none'
), $atts));
$images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=' . get_the_id() );
foreach( $images as $imageID => $imagePost )
$fullimage = wp_get_attachment_image($imageID, $size, false);
$imagedata = wp_get_attachment_image_src($imageID, $size, false);
$width = ($imagedata[1]+2);
$height = ($imagedata[2]+2);
return '<div style="width: '.$width.'px; height: '.$height.'px; float: '.$float.';">'.$fullimage.'</div>';
}
add_shortcode("postimage", "sc_postimage");

Código de utilização:

[postimage]

8. Adicione notas administrativas aos seus posts

Quando se trabalha com blogs multi-editor, é extremamente importante notificar outros escritores de problemas que existam nos seus posts. E se pudesse adicionar notas a esses mesmos posts, que só pudessem ser lidas por outros administradores? Nada como usar um shortcode para resolver esse problema:

add_shortcode( 'note', 'sc_note' );
function sc_note( $atts, $content = null ) {
if ( current_user_can( 'publish_posts' ) )
return '<div>'.$content.'</div>';
return ";
}

Código de utilização:

[note]Esta é uma nota pessoal que só pode ser lida por administradores![/note]

09. Remova a formatação automática do WordPress

Se você é um programador ou desenvolvedor, e costuma colocar porções de código no seu blog WordPress, provavelmente já reparou que a formatação automática do WordPress pode ser um verdadeiro problema. No entanto, existe um shortcode que o ajuda a resolver esse problema em determinadas porções de texto. Vejamos:

function my_formatter($content) {
$new_content = ";
$pattern_full = '{(\[raw\].*?\[/raw\])}is';
$pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

foreach ($pieces as $piece) {
if (preg_match($pattern_contents, $piece, $matches)) {
$new_content .= $matches[1];
} else {
$new_content .= wptexturize(wpautop($piece));
}
}

return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);

Código de utilização:

[raw]Esta porção de texto não será formatada automaticamente pelo WP.[/raw]

10. Apresente as estatísticas do seu blog com shortcodes

Sempre gostou da possibilidade de mostrar as estatísticas do seu blog em tempo real? Graças ao Wesley e ao seu plugin “Blog Stats”, é possível  apresentar de forma dinâmica, e através de shortcodes, todas as estatísticas do seu blog. Faça download do plugin Blog Stats e, depois de instalado, utilize os seguintes shortcodes:

[pagerank]
[feedburner_subscribers]
[alexa_rank]
[technorati_authority]
[technorati_rank]
[user_count]
[post_count]
[page_count]
[comment_count]
[trackback_count]
[avg_comments_per_post]
[category_count]
[tag_count]
[link_count]
[google_backlinks]
[yahoo_backlinks]
[delicious_bookmarks]

Até a próxima!!

%d blogueiros gostam disto: