Autor: Alex Koti

  • Plugin para WooCommerce: Etiquetas de Pedidos e Declaração de Correios para WooCommerce

    Acabamos de lançar nosso primeiro plugin no repositório do wordpress.org 🙂

    Recentemente tive experiência de ministrar um curso introdutório para WordPress/WooCoommerce, para o empreendedores de pequenas empresas. Com o WooCommerce, possível administrar todo o processo de venda pelo painel do site, o único ponto onde eu precisei direcionar os alunos para uma ferramenta externa foi no momento de gerar etiquetas de envio dos Correios e a respectiva declaração de conteúdo. A ferramenta em questão é o gerador fornecido pelos próprios Correios, porém é um processo manual e demorado, sujeito a erros de digitação.

    Pensando nessa situação, resolvi dar continuidade a um código que já utilizava a muitos anos para gerar etiquetas personalizadas para trabalhos de clientes, e fechei tudo em um plugin, publicando ele no repositório oficial do WordPress. Como todos os plugins presentes por lá, é gratuito e licença de código aberto. O plugin é voltado para quem esta começando, e ainda não trabalha com serviços/empresas intermediadoras de frete e/ou não utilizam um ERP, pois essas esoluções já possuem ferramentas para atender essa necessidade.

    Repositório no github, com instruções avançadas para programadores:
    https://github.com/siteswp-team/siteswp-wc-print-orders-brazil

  • Enviar variáveis para template-parts

    A function get_template_part() é uma forma segura de fazer includes no tema, pois não gera erros em caso de não encontrar o arquivo e permite fallback para um template genérico. Além disso, o seu uso facilita no uso dos Child Themes, já que permite dentro tema filho, fazer o include de um template-part do Tema Pai.

    Mas uma coisa a se atentar, é como passar variáveis para um template-part. Quando usamos includes comuns do PHP, as variáveis declaradas no arquivo parent, estão disponíveis no arquivo incluído, mas isso não acontece com o get_template_part(). No exemplo abaixo, a variável $custom_intro não estará disponível para o arquivo special.php:

    if ( have_posts() ) {
    	while ( have_posts() ) {
    		the_post();
    		$custom_intro = get_post_meta( $post->ID, 'custom_intro', true );
    		get_template_part( 'template-part', 'special' );
    	}
    } else {
    	get_template_part( 'template-part', 'default' );
    }
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    	<header class="entry-header">
    		<h2 class="entry-title"><?php the_title( sprintf( '<a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a>' ); ?></h2>
    	</header>
    
    	<div class="entry-content">
    		<?php
    		echo $custom_intro;
    		the_content();
    		?>
    	</div>
    </article>

    Em special.php irá gerar o erro Notice: Undefined variable: custom_intro. Para que $custom_intro fique disponível, é necessário enviar as variáveis pelo 3º parâmetro $args, cuidando para seja enviado como array associativo:

    if ( have_posts() ) {
    	while ( have_posts() ) {
    		the_post();
    		$custom_intro = get_post_meta( $post->ID, 'custom_intro', true );
    		$args = array( 'custom_intro' => $custom_intro );
    		get_template_part( 'template-part', 'special', $args );
    	}
    } else {
    	get_template_part( 'template-part', 'default' );
    }

    Dessa forma, o valor de $custom_intro, será acessível no template através de $args['custom_intro']:

    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    	<header class="entry-header">
    		<h2 class="entry-title"><?php the_title( sprintf( '<a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a>' ); ?></h2>
    	</header>
    
    	<div class="entry-content">
    		<?php
    		echo $args['custom_intro'];
    		the_content();
    		?>
    	</div>
    </article>