Posts Tagged postaweek2011

WordPress Custom Taxonomy Page Example with Taxonomy Selection Function(select field)

Today I’ll show something quite useful. With just four steps, we will build a custom taxonomy page, that uses a function to build a select field(<select>), that reloads the custom taxonomy page retrieving posts based on the selected option(the selected taxonomy for a specific custom post type).
Hoje vou mostrar algo bastante útil. Com apenas quatro passos, vamos construir uma página de taxonomia customizada, que usa uma função para construir um campo select(<select>), que recarrega a página recuperando posts baseados na opção selecionada(a taxonomia selecionada para um tipo de post customizado).

Step One:

First of all, we need to register a custom post type called video and a custom taxonomy called genre, as I show on my previous post.
Antes de mais nada, precisamos registrar um tipo de post customizado chamado video e uma taxonomia customizada chamada genre, como mostro em meu post anterior.

Step Two:

The function bellow builds a <select> field with options based on taxonomies registered for a specific custom post type. The code also brings a javascript function that redirects to the taxonomy page(taxonomy-genre.php on this example), where you can show the posts from a specific custom taxonomy. Put it on your functions.php file, on your theme directory.
A função abaixo constrói um campo <select> com opções baseadas em taxonomias registradas para um tipo de post customizado específico. O código também trás uma função javascript que redireciona à página da taxonomia(taxonomy-genre.php neste exemplo), onde você pode mostrar os posts de uma taxonomia customizada específica. Coloque ele no seu arquivo functions.php, no diretório de seu tema.

<?
function wp_selcstch_taxonomies( $args = '' ) {
	
	$defaults = array(			
		'taxonomy' 	=> 'category',		
  		'seltitle'	=> '',
		'selnamen'	=> '',
		'selidcss'	=> '' ,
		'baselink'	=> '', 
		'echo' => 1,
		'hide_empty'   => 0
	);

	$r = wp_parse_args( $args, $defaults );
	extract( $r );

	if ( !taxonomy_exists($taxonomy) )
		return false;
	
	if( isset( $r['seltitle']) && $r['seltitle']!=""):$idtlt =  $r['seltitle'];else:$idtlt =  '';endif;		
	if( isset( $r['selnamen']) && $r['selnamen']!=""):$idnam =  " name='".$r['selnamen']."' ";else:$idnam = '';endif;
	if( isset( $r['selidcss']) && $r['selidcss']!=""):$idcss =  " id='".$r['selidcss']."' ";else:$idcss = '';endif;	

	$categories = get_categories( $r );
	$swlink = false;
	$swchan = '';
	$output = '';

	// javascript function to redirect(reload) the page
	if( isset( $r['baselink']) && $r['baselink']!=""):
		$output .= '<script language="javascript">';
		$output .= 'function fgotxm(obj){';
		$output .= 'if(obj.options[obj.options.selectedIndex].value!=""){';
		$output .= 'window.location.href=obj.options[obj.options.selectedIndex].value;';
		$output .= '}';
		$output .= '}';
		$output .= '</script>';
		$swlink = true;
		$swchan = " onchange='fgotxm(this)'";
	endif;

	// html begin
	$output .= "<select".$idnam.$idcss.$swchan.">";
	if($idtlt!=""){
	$output .= "<option value=''>".$idtlt."</option>";;	
	}
	foreach ($categories as $cat):
		if($cat->category_nicename!=$taxonomy){
			if($swlink):$golnk =  " value='".$r['baselink']."/".$cat->slug."' ";else:$golnk = '';endif;
			$output .= "<option".$golnk.">".$cat->name."</option>";
		}
	endforeach;
	$output .= "</select>";
	
	if ( $echo )
		echo $output;
	else
		return $output;
}
?>

Step Three:

Now, let’s build a taxonomy page, called taxonomy-genre.php and save it on the theme directory.
Agora vamos construir uma página de taxonomia, chamada taxonomy-genre.php e salvá-la no diretório de seu tema.

<? 
// Let's get the term that was called by the url
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );

// here we will pass some parameters for our function that builds the select
$taxonomy   = 'genre'; // the taxonomy slug
$seltitle	= 'Select a Option'; // the select title
$selnamen	= 'select_opt'; // the select name
$selidcss	= ''; // a css id for the select, if wanted
$baselink	= get_bloginfo('url') . "/".'genre'; // and our page base link
// the baselink is the workaround we use to make WordPress find the taxonomy page

$args = array(
  'taxonomy'     => $taxonomy ,
  'seltitle'	 => $seltitle ,
  'selnamen'	 => $selnamen ,
  'selidcss'	 => $selidcss,
  'baselink'	 => $baselink,
  'echo'	 => 0
);

// here we call the function that builds the select
$combotax = wp_selcstch_taxonomies( $args) ;

// and here we set two conditions based on the term asked on the url to build the query
//
// first we call all the genres(genre taxonomy) for the video custom post type 
// it will be used when the user calls http://yourdomain/genre/all/ on your browser 
if($term->slug=="all"){ 
	$querycp = array( 'post_type'=>'video','posts_per_page' => -1 );
}
// then we call a specific genre(genre taxonomy) for the video custom post type e.g. scifi 
// it will be used when the user calls http://yourdomain/genre/scifi/ on your browser 
else{
	$querycp = array( 'post_type'=>'video', 'genre' => $term->slug, 'posts_per_page' => -1 );	
}
?>
<html>
<body>
<head>
<title>Example</title>
</head>

<?=$combotax."<br>"; // let's display the combo ?>

<? 
// and build the loop
query_posts($querycp);
if (have_posts()) :
  while (have_posts()) : the_post();								  
    echo get_the_title()."<br>";
    echo get_the_content()."<br>";
  endwhile;
endif;
?>
</body>
</html>

Step Four:

Now you must go to wp-admin. On Videos menu, choose Genres and create a main genre called “all”, with slug “all”. Then you can add some child genres, something like “drama” with slug “drama”, “scifi” with slug “scifi”, etc(take a look on the picture).

Genres for videos

Click to open - genres for custom post type video


Agora você deve ir até o wp-admin. No menu Videos, escolha Genres e crie um genêro principal chamado “all”, com slug “all”. Então você pode adicionar alguns genêros filhos, algo como “drama” com slug “drama”, “scifi” com slug “scifi”, etc(dê uma olhada na figura).

Don’t forget to add some posts to each child genre to display on your custom taxonomy page. Last but not least, a important tip: after registering a custom taxonomy, go to wp-admin and simply visit the permalinks settings page. It flushes all WordPress permalink rules, so it will make your changes related to the taxonomy page work.
Não esqueça de adicionar alguns post para cada genêro filho para mostrar em sua página de taxonomia customizada. Por último, mas importante, uma dica: depois de registrar uma taxonomia customizada, vá até o wp-admin e simplesmente visite a página de configurações de permalinks. Isso faz com que suas regras de permalink sejam zeradas, fazendo suas mudanças relacionadas à página de taxonomia funcionar.

Hope you find this example useful.
Espero que você ache este exemplo útil.

,

Leave a comment

Simple Way to Make WordPress Comments Functionality Work on Your Theme / Blog / Website

Today I’ll show a very simple way to make comments function work on your WordPress website, if you are working with your own theme or modifying one that already exists. There are only three steps.
Hoje vou mostrar um jeito muito simples de fazer a função de comentários funcionar no seu site WordPress, se você está trabalhando com seu próprio tema, ou modificando um que já exista. São apenas três passos.

Step 1:

On your category page(e.g. category.php), put the code bellow, where you want the link for commenting to be shown(note that it is inside the loop). This link will take the user to your single.php page, where the comments will be displayed bellow the post.
Na sua página de categoria(por exemplo category.php), ponha o código abaixo, onde deseja mostrar o link para comentar(note que ele está dentro do loop). Este link levará o usuário à sua página single.php, onde os comentários serão exibidos abaixo do post.

<?
 query_posts("category_name=yourcategory");
// here we start the loop
if (have_posts()) :		 	 
  while (have_posts()) : the_post();	
?>
   // this line displays the link for commenting, going to the single.php file when clicked
   <a href="<?php comments_link(); ?>">
       <?php comments_popup_link('Text you want to display','Text for one comment','% Text for various comments', 'Text for more'); ?>
   </a>
<?
  endwhile;
endif;
?>

Step 2:

Now,let’s put the code bellow on single.php file.
Agora, vamos colocar o código abaixo no arquivo single.php

<?
// here we start the loop
if (have_posts()) :		 	 
  while (have_posts()) : the_post();	
?>
   <a href="<?php comments_link(); ?>">
      <?php comments_popup_link('Text you want to display','Text for one comment','% Text for various comments', 'Text for more'); ?>
      </a>
<?
  // this line displays the comment form and the comment list
  comments_template();
  endwhile;
endif;
?>

Step 3:

Save the code bellow as comments.php, on your theme directory. CSS classes and styles can be changed if wanted.
Salve o código abaixo como comments.php no diretório de seu tema. Classes CSS e estilos podem ser mudados se desejado.

<?php
	if ( 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']) )
		die ( 'Please do not load this page directly. Thanks!' );
?>
<link href="style.css" rel="<? bloginfo('stylesheet_url'); ?>" type="text/css" />

			<div id="comments">
<?php
	$req = get_option('require_name_email'); // Checks if fields are required. Thanks, Adam. ;-)
	if ( !empty($post->post_password) ) :
		if ( $_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password ) :
?>
				<div class="nopassword"><?php _e('This post is protected. Enter the password to view any comments.') ?></div>
			</div><!-- .comments -->
<?php
		return;
	endif;
endif;
?>
<?php if ( $comments ) : ?>
<?php global $sandbox_comment_alt ?>

<?php /* numbers of pings and comments */
$ping_count = $comment_count = 0;
foreach ( $comments as $comment )
	get_comment_type() == "comment" ? ++$comment_count : ++$ping_count;
?>
<?php if ( $comment_count ) : ?>
<?php $sandbox_comment_alt = 0 ?>

				<div id="comments-list" class="comments">
					<h3><?php printf($comment_count > 1 ? __('<span>%d</span> Comentários') : __('<span>Um</span> Comentário'), $comment_count) ?></h3>

					<ol>
<?php foreach ($comments as $comment) : ?>
<?php if ( get_comment_type() == "comment" ) : ?>
						<li id="comment-<?php comment_ID() ?>">
							<div class="datahora">Por <a href="<?php comment_author_url(); ?>"><?php comment_author(); ?></a> em <?php printf(__('%1$s às %2$s'),
										get_comment_date(),
										get_comment_time(),
										'#comment-' . get_comment_ID() );
										edit_comment_link(__('Edit'), ' <span class="meta-sep">|</span> <span class="edit-link">', '</span>'); ?></div>
<?php if ($comment->comment_approved == '0') _e("\t\t\t\t\t<span class='unapproved'>Seu comentário está esperando moderação.</span>\n") ?>
							<span class="comentario"><?php comment_text() ?></span>
						</li>
<?php endif; /* if ( get_comment_type() == "comment" ) */ ?>
<?php endforeach; ?>

					</ol>
				</div><!-- #comments-list .comments -->

<?php endif; /* if ( $comment_count ) */ ?>
<?php if ( $ping_count ) : ?>
<?php $sandbox_comment_alt = 0 ?>

				<div id="trackbacks-list" class="comments">
					<h3><?php printf($ping_count > 1 ? __('<span>%d</span> Trackbacks') : __('<span>Um</span> Trackback'), $ping_count) ?></h3>

					<ol>
<?php foreach ( $comments as $comment ) : ?>
<?php if ( get_comment_type() != "comment" ) : ?>

						<li id="comment-<?php comment_ID() ?>" class="datahora">
							<div class="datahora"><?php printf(__('Por %1$s em %2$s às %3$s'),
									get_comment_author_link(),
									get_comment_date(),
									get_comment_time() );
									edit_comment_link(__('Edit' ), ' <span class="meta-sep">|</span> <span class="edit-link">', '</span>'); ?></div>
<?php if ($comment->comment_approved == '0') _e('\t\t\t\t\t<span class="unapproved">Your trackback is awaiting moderation.</span>\n') ?>
							<?php comment_text() ?>
						</li>
<?php endif /* if ( get_comment_type() != "comment" ) */ ?>
<?php endforeach; ?>

					</ol>
				</div><!-- #trackbacks-list .comments -->

<?php endif /* if ( $ping_count ) */ ?>
<?php endif /* if ( $comments ) */ ?>
<?php if ( 'open' == $post->comment_status ) : ?>
				<div id="respond">
					<h3><?php _e('Comente') ?></h3>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
					<p id="login-req"><?php printf(__('Você precisa estar <a href="%s" title="Log in">logado</a> para comentar.'),
					get_option('siteurl') . '/wp-login.php?redirect_to=' . get_permalink() ) ?></p>

<?php else : ?>
					<div class="formcontainer">	
						<form id="commentform" action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post">

<?php if ( $user_ID ) : ?>
							<p id="login"><?php printf(__('<span class="loggedin">Logado como <a href="%1$s" title="Logged in as %2$s">%2$s</a>.</span> <span class="logout"><a href="%3$s" title="Log out of this account">Sair?</a></span>'),
								get_option('siteurl') . '/wp-admin/profile.php',
								wp_specialchars($user_identity, true),
								get_option('siteurl') . '/wp-login.php?action=logout&redirect_to=' . get_permalink() ) ?></p>

<?php else : ?>

														<div class="form-label"><label for="author"><?php _e('Name') ?></label> <?php if ($req) _e('<span class="required">*</span>') ?></div>
							<div class="form-input"><input class="campos" id="author" name="author" type="text" value="<?php echo $comment_author ?>" size="30" maxlength="20" tabindex="3" /></div>

							<div class="form-label"><label for="email"><?php _e('Email') ?></label> <?php if ($req) _e('<span class="required">*</span>') ?></div>
							<div class="form-input"><input class="campos" id="email" name="email" type="text" value="<?php echo $comment_author_email ?>" size="30" maxlength="50" tabindex="4" /></div>

							<div class="form-label"><label for="url"><?php _e('Website') ?></label></div>
							<div class="form-input"><input class="campos" id="url" name="url" type="text" value="<?php echo $comment_author_url ?>" size="30" maxlength="50" tabindex="5" /></div>

<?php endif /* if ( $user_ID ) */ ?>

							<div class="form-label"><label for="comment"><?php _e('Comment') ?></label></div>
							<div class="form-textarea"><textarea class="campos" id="comment" name="comment" cols="50" rows="8" tabindex="6"></textarea>
						  </div>

							<div class="form-submit"><input class="botao" id="submit" name="submit" type="submit" value="<?php _e('Comentar') ?>" tabindex="7" accesskey="P" /><input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /></div>

							<?php do_action('comment_form', $post->ID); ?>

						</form><!-- #commentform -->
					</div><!-- .formcontainer -->
<?php endif /* if ( get_option('comment_registration') && !$user_ID ) */ ?>

				</div><!-- #respond -->
<?php endif /* if ( 'open' == $post->comment_status ) */ ?>

			</div><!-- #comments -->

Now your comments funcionality must be working on your WordPress site, but let’s say you want to change a little comments CSS. Here goes a example with the basic elements. Just put it on your style.css file and change the properties you want:
Agora sua funcionalidade de comentários deve estar funcionando em seu site WordPress, mas digamos que você quer mudar um pouco o CSS dos comentários. Aqui vai um exemplo com os elementos básicos. É só colocar no seu arquivo style.css e mudar as propriedades que quiser:

#comments #comments-list ol li{list-style:none;padding:5px 5px 3px 10px;background-color:#e1e4e8;margin-bottom:10px}
#comments #respond .formcontainer #commentform .form-label label{width:auto;padding-right:2px;}
#comments #respond .formcontainer #commentform .form-input input{width:330px;height:25px}
#comments #respond .formcontainer #commentform .form-textarea textarea{width:330px;height:155px}
#comments #respond .formcontainer #commentform .form-submit #submit{margin: 10px 0 0;}
#comments{clear:both;}
#comments #respond .formcontainer{margin-top:10px;}

Hope you find it useful.
Espero que achem útil.

,

2 Comments

Retrieving The Total Number of Posts from a Specific Custom Post Type WordPress Taxonomy

The function bellow can be used to retrieve the total number of posts from a specific custom post type taxonomy in WordPress sites. There are only two steps, supposing you’ve registered a custom post type video and a taxonomy genre as I show on a previous post.
A função abaixo pode ser usada para retornar o número total de posts de uma taxonomia específica de um tipo de post customizado. São apenas dois passos, supondo que você criou um tipo de post customizado ‘video’ e uma taxonomia ‘genre’ como eu mostro em um post anterior.

Step 1:

<?
// put this code on your functions.php file, on your theme directory
// the function use the custom post type registration and the taxonomy slug as parameters
function wt_get_custom_taxonomy_count($ptype,$pterm) {
	global $wpdb;
	$SQL  = "SELECT count(*) FROM $wpdb->posts posts, $wpdb->terms terms, $wpdb->term_relationships rels ";
	$SQL .= "WHERE posts.post_status = 'publish' ";
	$SQL .= "AND post_type = '".$ptype."' ";
	$SQL .= "AND posts.ID = rels.object_id ";
	if($pterm!=""):
	$SQL .= "AND terms.slug = '".$pterm."' ";
	endif;
	$SQL .= "AND terms.term_id = rels.term_taxonomy_id";
	return $wpdb->get_var($SQL);
}
?>

Step 2:

<?
// put this on the theme page where you want the info to show
echo wt_get_custom_taxonomy_count('video','genre');
?>

This code can be very useful to be used when you are working on a WordPress custom taxonomy page.
Este código pode ser bastante útil quando você está trabalhando em uma página de taxonomia customizada do WordPress.

,

Leave a comment

Building a WordPress Rewrite Rule(Passing and Receiveing Parameters Using Permalink Url)

When you are working with WordPress, sometimes you may need to pass parameters to a page where you want to display posts data using the permalink url structure, e.g. http://yoursite/yourpage/2011/03/ where 2011 is the value for a year variable and 03 is the value for a month variable.
Quando você está trabalhando com WordPress, às vezes você pode precisar passar parâmetros para uma página onde quer exibir dados de posts usando a estrutura de url de permalinks, por exemplo, http://yoursite/yourpage/2011/03/ onde 2011 é o valor para uma variável de ano e 03 é o valor para uma variável de mês.

So, let’s take a look on the code.
Então, vamos dar uma olhada no código.

<?
// here we register the variables that will be used as parameters on the url
function add_my_var($public_query_vars) {
    $public_query_vars[] = 'yvar'; // year
    $public_query_vars[] = 'mvar'; // month
    return $public_query_vars;
}
add_filter('query_vars', 'add_my_var');

// building the rewrite rules, for the two parameters
function do_rewrite() {
     add_rewrite_rule('(yourpage)/[/]?([0-9]*)[/]?([0-9]*)$', 'index.php?pagename=yourpage&yvar=$matches[2]&mvar=$matches[3]','top');
}
add_action('init', 'do_rewrite');
?>

Now you are able to open a url like http://yoursite/yourpage/2011/03/, receiveing and printing some parameters. Here goes the code for printing the parameters on yourpage page.
Agora você é capaz de abrir uma url como http://yoursite/yourpage/2011/03/, recebendo e imprimindo alguns parâmetros. Aqui vai o código para imprimir os parâmetros na página yourpage

<?
echo "year:" .get_query_var( 'yvar' ) ."<br>";
echo "month: " .get_query_var( 'mvar' ) ."<br>";
echo "page :" .get_query_var('paged') ."<br>";
?>

There’s a important tip. After registering or changing any rewrite rule, go to wp-admin and simply visit the permalink settings page. It flushes all rules, so it will make your changes work 😉
Há uma dica importante. Depois de registrar ou mudar qualquer regra rewrite, vá até o wp-admin e simplesmente visite a página de configurações de permalink. Ela zera todas as regras, então isso vai fazer suas mudanças funcionar 😉

For further info, visit the Codex.
Para maiores informações, visite o Codex.

,

Leave a comment

WordPress Custom Taxonomy Page Example – Displaying Custom Post Types Posts

There is a little explanation before going to the code, you can read it or go straight to the code, copy it, paste it and make it work.
Há uma pequena explicação antes de ir ao código, você pode ler ou ir direto ao código, copiar, colar e fazer funcionar.

First of all, you’d better take a look on my two previous posts, about registering custom post types and displaying basic info from a custom taxonomy.
It will help you to understand where we are going.

Antes de mais nada, é melhor você dar uma olhada em meus dois posts anteriores, sobre registrar tipos de posts customizados e exibir informação básica de uma taxonomia customizada.
Isso vai te ajudar a compreender aonde estamos indo.

After a custom post type called ‘videos’ and a taxonomy called ‘genre’ are registered, and some posts are associated with the ‘scifi’ term on wp-admin, we will use the taxonomy.php page, on the theme directory, to retrieve content from the custom post type. So it’s good understand the WordPress template hierarchy.
Depois que um tipo de post customizado chamado ‘videos’ e uma taxonomia chamada ‘genre’ são registrados, e alguns posts são associados com o termo ‘scifi’ no wp-admin, nós vamos usar a página taxonomy.php, no diretório do tema, para retornar conteúdo do tipo de post customizado. Então é bom entender a hierarquia de templates WordPress.

Note that genre works like a “category menu” on wp-admin and scifiworks like a “specific category”.
Note que genre funciona como um “menu de categorias” no wp-admin e scifi funciona como uma “categoria específica”.

When you ask for a url like http://yoursite.com/genre/scifi on your browser, WordPress will search your theme directory for three files: “taxonomy-taxonomy-term.php”, “taxonomy-taxonomy.php” and “taxonomy.php” or, in our case, “taxonomy-genre-scifi.php”, “taxonomy-scifi.php” and “taxonomy.php”.

Quando você chama uma url como http://yoursite.com/genre/scifi no seu navegador, o WordPress vai procurar no seu diretório de temas três arquivos: “taxonomy-taxonomy-term.php”, “taxonomy-taxonomy.php” and “taxonomy.php” ou, no nosso caso, “taxonomy-genre-scifi.php”, “taxonomy-scifi.php” and “taxonomy.php”.

The code for the “taxonomy.php” page to display the “scifi” posts:
O código para a página “taxonomy.php” exibir os posts “scifi” é:

<?
// this line makes the page find the correct data when you call http://yourblog.com/genre/scifi on your browser
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );

// here we print scifi name and description
echo $term->name;
echo $term->description;

// now let's retrieve the posts data
query_posts(array( 'post_type'=>'videos', 'genre' => $term->slug, 'posts_per_page' => -1 ));
if (have_posts()) :
  while (have_posts()) : the_post();
    $cttrm = get_the_terms( get_the_ID() , 'genre' );
    // here we print the term('category') name 
    foreach ( $cttrm as $txnam ) {
      echo $txnam->name."<br />";
    }
    echo get_the_title()."<br />";
    echo get_the_content()."<br />";
  endwhile;
endif;
?>

, ,

3 Comments

Get Post List With Thumbnails 2.0.0 – Displays a List With WordPress Posts and Custom Size Thumbnails

Get Post List With Thumbnails 2.0.0 is the second version of the second plugin I created for WordPress. It displays a posts list with thumbnails, and there’s some cool features you can configure on wp-admin.
Get Post List With Thumbnails 2.0.0 é a segunda versão do segundo plugin que criei para WordPress. Ele exibe uma lista de posts com thumbnails e há algumas características legais que você pode configurar no wp-admin.

Passing some parameters you will be able to control list orientation, display only images, display or not the post date, date format, display or not the post title, category of posts, the number of posts, number of registers per line(for horizontal orientation), the table width, and the thumbnails dimensions.
Passando alguns parâmetros, você será capaz de controlar a orientação da lista, exibição apenas de imagens, exibição ou não da data do post, o formato da data, exibição ou não do título do post, categoria dos posts, número de posts, números de registros por linha(para a orientação horizontal), a largura da tabela, e as dimensões dos thumbnails.

Take a look on the plugin installation page, and see how it works in a easy way.
Dê uma olhada na página de instalação do plugin e veja como ele funciona de maneira simples.

Please let me know if you are using the plugin(and if you allow, I’ll tweet your site to my friends) or if you have doubts and suggestions, cos this second version was based on some comments I’ve received from Get Post List With Thumbnails 1.0.0 users.
Por favor me avise se você estiver usando o plugin(e se você permitir, twittarei seu site para meus amigos) ou se você tiver dúvidas e sugestões, porque esta segunda versão foi baseada em alguns comentários que recebi dos usuários do YouTubeNails.

4 Comments

Displaying Info From a Specific Custom Taxonomy Term(Hierarchical Taxonomies) On WordPress

See also Custom Taxonomy Page Example.

I’ve written before about registering and displaying custom post types on WordPress. So you’d better check my previous post to understand what is coming next(the example bellow is based on the previous post).
Eu escrevi anteriormente sobre registrar e exibir tipos de posts customizados no WordPress. Então é melhor você conferir meu post anterior, para entender o que vem por aí(o exemplo abaixo é baseado no post anterior).

As you could see, one of the cool things about WordPress custom post types is that you can register also hierarchical taxonomies that will work as “regular” post categories for your custom post types.
Como você pôde ver, uma das coisas legais nos tipos de posts customizados do WordPress, é que você pode também registrar taxonomias hierárquicas, que vão funcionar como categorias “normais” para seus tipos de posts customizados.

Although these facilities, it took me some work to find a simple way to display some info from hierarchical taxonomies(or, let’s say custom categories), and bellow(in few lines), I’ll share the result of this work with you.
Apesar destas facilidades, me custou algum trabalho descobrir um jeito simples de exibir algumas informações das taxonomias hierárquicas, e abaixo(em poucas linhas), eu vou dividir o resultado deste trabalho com vocês.

<?
// # to retrieve an array with all info from a custom term 'scifi' 
// that "begins" to a hierarquical taxonomy called 'genre'
$term = get_term_by('slug','scifi','genre');

// the example above uses slug to retrieve the info, but you can
// use other parameters, try searching for get_term_by method on WordPress Codex

// # to display 'scifi' term description defined on wp-admin
echo $term->description . "<br>";

//# you can also display the name, slug, or even the term_id
echo $term->name . "<br>";
echo $term->slug . "<br>";
echo $term->term_id . "<br>";

//# to print the array and see all the available info
print_r($term);
?>

Hope you find it useful. As I said, it looks simple and easy, but took me some work to find. 😉
Espero que você ache útil. Como eu disse, parece simples e fácil, mas me custou algum trabalho descobrir. 😉

For further info, visit the Codex.
Para mais informações, visite o Codex.

,

1 Comment

YouTubeNails 2.0.0 – Displays Thumbnails for your YouTube videos on WordPress sites

YouTubeNails 2.0.0 is the second version of the first plugin I created for WordPress. Basically, it displays a thumbnail gallery based on all your posts that contains YouTube videos.
YouTubeNails 2.0.0 é a segunda versão do primeiro plugin que criei para WordPress. Basicamente, ele exibe uma galeria de thumbnails baseada em todos os seus posts que contém vídeos do YouTube.

The cool thing about it, is that you can choose between easily configure a widget on wp-admin, or call it as a short code where you want, passing some parameters that allows you to set things like the number of posts you want to display, their category, and even the thumbnails size.
O legal é que você pode escolher entre configurar facilmente um widget no wp-admin, ou chamá-lo como um short code onde quiser, passando alguns parâmetros que te permitem configurar coisas como o número de posts que quer exibir, a categoria deles e mesmo o tamanho dos thumbnails.

Take a look on the plugin installation page, and see how it works in a easy way.
Dê uma olhada na página de instalação do plugin e veja como ele funciona de maneira simples.

Please let me know if you are using the plugin(and if you allow, I’ll tweet your site to my friends) or if you have doubts and suggestions, cos this second version was based on some comments I’ve received from YouTubeNails users.
Por favor me avise se você estiver usando o plugin(e se você permitir, twittarei seu site para meus amigos) ou se você tiver dúvidas e sugestões, porque esta segunda versão foi baseada em alguns comentários que recebi dos usuários do YouTubeNails.

,

Leave a comment

Meet WP e-Commerce Product Showroom Plugin – a custom list of products

I’m proud to present you my new WordPress plugin. It’s “WP e-Commerce Product Showroom“, a product list that you can customize through a widget on wp-admin and fit to your layout needs using a little bit of css.
Estou orgulhoso em apresentar a vocês meu novo plugin WordPress. É o “WP e-Commerce Product Showroom”, uma lista de produtos que você pode customizar através de um widget no wp-admin e adequar às suas necessidades de layout com um pouco de css.

If you are working with “WP e-Commerce”, all you have to do to is to follow the next simple steps:
Se você está trabalhando com “WP e-Commerce”, tudo que você deve fazer é seguir os próximos passos simples:

1. Upload wp_e_showrp folder to the /wp-content/plugins/ directory
Subir a pasta wp_e_showrp para o diretório /wp-content/plugins/
2. Activate the plugin through the ‘Plugins’ menu in WordPress
Ativar o plugin através do menu ‘Plugins’ no WordPress.
3. Register a widget sidebar on your functions file, for example, just paste the code bellow on your theme functions.php
Registrar um sidebar widget no seu arquivo functions, por exemplo cole o código abaixo no functions.php de seu tema.

<if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'wp_e_showrp', 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ));>

Or

You if you have already registered any sidebar, you can drag the WP e-Commerce Product Showroom widget inside it, at wp-admin
Ou, se você já tem uma sidebar registrada, você pode arrastar o widget WP e-Commerce Product Showroom para dentro dela, no wp-admin.
1. Configure the widget on your wp-admin pannel and save
Configure o widget no seu painel wp-admin e salve.
2. Use the PHP code bellow where you want the widget to show, on your theme pages
Use o código PHP abaixo onde você quer que o widget apareça, nas páginas de seu tema

<if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('wp_e_showrp')) : endif;>

Now, the best part… 😉
Agora a melhor parte… 😉

As the result div uses a css class(showrpdiv), you can play with it and make the product list look like you want. Check the example bellow. If you put this on the same page you call the plugin, the list will change as you wish.
Como o div de resultado usa uma classe css(showrpdiv), você pode brincar com ela e fazer a lista de produtos aparecer como você quiser. Se você colocar um código como o abaixo na mesma página onde chama o plugin, a lista vai mudar como você desejar.

.showrpdiv{ float:left; } 
.showrpdiv ul a{ color:red; } 
.showrpdiv li{list-style: none;}

I hope you find it useful and helpful on your WordPress e-commerce projects.
Espero que você ache útil e que possa lhe ajudar em seus projetos de e-commerce com WordPress.

, ,

4 Comments

Registering and Displaying WordPress Custom Post Types In a Very Easy Way

This post was moved to http://www.wpworking.com/category/custom-post-types-2/


In WordPress, you can define custom post types. It means that you can have on you wp-admin menu, more menu items, besides “Posts”, “Midia”, “Links”, “Pages”, etc, and work with your new post type as you do with the default menus, categorizing, adding content, etc.
No WordPress, você pode definir tipos de posts personalizados. Isso significa que você pode ter no seu menu do wp-admin, mais itens de menu além de “Posts”, “Mídia”, “Links”, “Páginas”, etc, e trabalhar com els como faz com os tipos padrão, categorizando, adicionando conteúdo, etc.

Let’s create a new custom post type. Open your functions.php file, on your theme directory, and paste the code bellow.
Vamos criar um novo tipo de post personalizado Abra seu arquivo functions.php, no diretório de seu tema, e cole o código abaixo.

// The register_post_type() function is not to be used before the 'init'.
add_action( 'init', 'videos_init' );

/* Here's how to create your customized labels */
function videos_init() {
	$labels = array(
		'name' => _x( 'Videos', 'custom post type generic name' ), // Tip: _x('') is used for localization
		'singular_name' => _x( 'Videos', 'individual custom post type name' ),
		'add_new' => _x( 'Add New', 'add' ),
		'add_new_item' => __( 'Add New Video' ),
		'edit_item' => __( 'Edit Video' ),
		'new_item' => __( 'New Video' ),
		'view_item' => __( 'View Video' ),
		'search_items' => __( 'Search Videos' ),
		'not_found' =>  __( 'No Video Found' ),
		'not_found_in_trash' => __( 'No Video Found in trash' ),
		'parent_item_colon' => ''
	);

	// Create an array for the $args
	$args = array( 'labels' => $labels, /* NOTICE: the $labels variable is used here... */
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'query_var' => true,
		'rewrite' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'menu_position' => null,
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
	); 

	register_post_type( 'video', $args ); /* Register it and move on */
}

Now you got a new menu on your wp-admin, called Videos. For further info about the register_post_type() function, visit the Codex.
Agora você tem um novo menu no seu wp-admin, chamado Videos. Para mais informações sobre a função register_post_type(), visite o Codex.

What about creating a category and a tag for this new Videos menu? Paste the code bellow on your functions.php
Que tal criar uma categoria e uma tag para este novo menu Videos? Cole o código abaixo em seu arquivo functions.php

// hook into the init action and call create_book_taxonomies() when it fires
add_action( 'init', 'create_video_taxonomies', 0 );

// create two taxonomies, genres and writers for the post type "videos"
function create_video_taxonomies() {

	// Add new taxonomy, make it hierarchical (like categories)
	$labels = array(
		'name' => _x( 'Genres', 'taxonomy general name' ),
		'singular_name' => _x( 'Genres', 'taxonomy singular name' ),
		'search_items' =>  __( 'Search Genres' ),
		'all_items' => __( 'All Genres' ),
		'parent_item' => __( 'Main Genre' ),
		'parent_item_colon' => __( 'Main Genre:' ),
		'edit_item' => __( 'Edit Genre' ),
		'update_item' => __( 'Update Genre' ),
		'add_new_item' => __( 'Add Genre' ),
		'new_item_name' => __( 'New Genre Name' ),
	); 	

	register_taxonomy( 'genre', array( 'video' ), array(
		'hierarchical' => true,
		'labels' => $labels, /* NOTICE: Here is where the $labels variable is used */
		'show_ui' => true,
		'query_var' => true,
		'rewrite' => array( 'slug' => 'genre' ),
	));
	// Add new taxonomy, NOT hierarchical (like tags)
	$labels = array(
		'name' => _x( 'Actor', 'Actor Name' ),
		'singular_name' => _x( 'Actor', 'Individual Actor Name' ),
		'search_items' =>  __( 'Search Actors' ),
		'popular_items' => __( 'Popular Actors' ),
		'all_items' => __( 'All Actors' ),
		'parent_item' => null,
		'parent_item_colon' => null,
		'edit_item' => __( 'Edit Actors' ),
		'update_item' => __( 'Update Actor' ),
		'add_new_item' => __( 'Add New Actor' ),
		'new_item_name' => __( 'New Actor Name' ),
		'separate_items_with_commas' => __( 'Separate Actors With Commas' ),
		'add_or_remove_items' => __( 'Add or Remove Actors' ),
		'choose_from_most_used' => __( 'Choose From Most Used Actors' )
	);
	register_taxonomy( 'actor', 'video', array(
		'hierarchical' => false,
		'labels' => $labels, /* NOTICE: the $labels variable here */
		'show_ui' => true,
		'query_var' => true,
		'rewrite' => array( 'slug' => 'actor' ),
	));
} // End of create_video_taxonomies() function.

We’ve created two taxonomies for the custom post type video. Genre(hierarchical), works as a category. Actor(not hierarchical), works as a tag. For further info about the register_taxonomy() function, visit the Codex.
Nós criamos duas taxonomias para o tipo de post personalizado video. Genre(hierárquica), funciona como uma categoria. Actor(não hierárquica) funciona como uma tag. Para maiores informações sobre a função register_taxonomy() , visite o Codex.

So much hard working! Now let’s have fun 🙂 , let’s display the posts.
Quanta trabalheira! Agora vamos nos divertir 🙂 , vamos exibir os posts.

<?
// * if you want to work with the genre category on your query
// $wp_query = new WP_Query(array('post_type' => 'video', 'genre' => 'scifi','posts_per_page' => -1));
//
// * if you want to work with the actor tag on your query
// $wp_query = new WP_Query(array('post_type' => 'video', 'genre' => 'scifi','actor' => 'keanureaves','posts_per_page' => -1));
//
$wp_query = new WP_Query(array('post_type' => 'video', 'genre' => 'scifi','actor' => 'keanureaves','posts_per_page' => -1));
if (have_posts()) :
     while (have_posts()) : the_post();
?>
     <div>
       <h3><a href="<?the_permalink();?>"><?=get_the_title();?></a></h3>
     </div>
     <div>
       <p><?=get_the_content();?></p>
     </div>
<?
    endwhile;
else:
?>
     <div>
       <p>No registers found.</p>
     </div>
<?
endif;
?>

That’s all folks. Copy, past and make it work. The code above was tested a lot, please let me know about any issue.
Era isso pessoal. Copiem, colem e façam acontecer. O código acima foi bastante testado, por favor me mantenham informado sobre qualquer dificuldade.

,

23 Comments

%d bloggers like this: