Marca d’água nas imagens

Desafio dado pelo cliente: marca d’água em determinadas imagens. Fui estudar na internet e achei o código desse blog Webdicas.

Essa é a imagem utilizada como teste:
foto_009

E essa é a imagem da marca d’água:
marca

Ambas vieram do blog que eu usei como base para estudar.

O código é esse:

<?php
	$foto = "foto_009.jpg";
	$foto = imagecreatefromjpeg($foto);
	$marca = "marca.png";
	$marca = imagecreatefrompng($marca);

	$marca_width = imagesx($marca);
	$marca_height  = imagesy($marca);

	$foto_width = imagesx($foto);
	$foto_height  = imagesy($foto);

	//imagecopyresampled($foto,$marca,($foto_width/2)-($marca_width/2),($foto_height/2)-($marca_height/2),0,0,$marca_width,$marca_height,$marca_width,$marca_height);

	$position = array(
		'upper' => array(
			'left' => array(
				'x' => 0,
				'y' => 0
				),
			'middle' => array(
				'x' => ($foto_width/2)-($marca_width/2),
				'y' => 0
				),
			'right' => array(
				'x' => $foto_width-$marca_width,
				'y' => 0
				)
			),
		'middle' => array(
			'left' => array(
				'x' => 0,
				'y' => ($foto_height/2)-($marca_height/2)
				),
			'middle' => array(
				'x' => ($foto_width/2)-($marca_width/2),
				'y' => ($foto_height/2)-($marca_height/2)
				),
			'right' => array(
				'x' => $foto_width-$marca_width,
				'y' => ($foto_height/2)-($marca_height/2)
				)
			),
		'bottom' => array(
			'left' => array(
				'x' => 0,
				'y' => $foto_height-$marca_height
				),
			'middle' => array(
				'x' => ($foto_width/2)-($marca_width/2),
				'y' => $foto_height-$marca_height
				),
			'right' => array(
				'x' => $foto_width-$marca_width,
				'y' => $foto_height-$marca_height
				),
			)
		);
?>

Diferente do blog, adicionei coordenadas de posicionamento da marca d’água. Os códigos abaixo deverão ser colocados após o código acima.

Canto superior esquerdo da imagem

<?php
	$paltura = 'upper';
	$plargura = 'left';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_upper-left

Canto superior no meio da imagem

<?php
	$paltura = 'upper';
	$plargura = 'middle';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_upper-middle

Canto superior direito da imagem

<?php
	$paltura = 'upper';
	$plargura = 'right';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_upper-right

No meio, do lado esquerdo da imagem

<?php
	$paltura = 'middle';
	$plargura = 'left';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_middle-left

No meio da imagem

<?php
	$paltura = 'middle';
	$plargura = 'middle';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_middle-middle

No meio, do lado direito da imagem

<?php
	$paltura = 'middle';
	$plargura = 'right';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_middle-right

No canto inferior esquerdo da imagem

<?php
	$paltura = 'bottom';
	$plargura = 'left';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_bottom-left

No canto inferior, no meio da imagem

<?php
	$paltura = 'bottom';
	$plargura = 'middle';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_bottom-middle

No canto inferior direito da imagem

<?php
	$paltura = 'bottom';
	$plargura = 'right';
	imagecopyresampled($foto,$marca,$position[$paltura][$plargura]['x'],$position[$paltura][$plargura]['y'],0,0,$marca_width,$marca_height,$marca_width,$marca_height);
	imagejpeg($foto,'foto_'.$paltura.'-'.$plargura.'.jpg',100);
?>

<img src="<?php echo 'foto_'.$paltura.'-'.$plargura.'.jpg'; ?>" />

A imagem com a marca d’água ficará assim:
foto_bottom-right

Anúncios

Tag More

A tag More é muito mais que uma tag. Serve também para fazer algumas gambis. Para isso, deve separar os dois lados:

$conteudo = get_the_content();
$conteudo = preg_replace( '/<span id="more-\d+"><\/span>/i', '<!-- more -->', $conteudo );
$conteudo = preg_split( '/\<\!\-\-\s*more\s*\-\-\>/i', $conteudo );
print_r( $conteudo );

Número de posts por página

Dentro do admin do wordpress é possível setar o número de post’s que serão mostrados na listagem.

Exemplo:
Quando você está vendo uma lista de produtos e dentro da página é possível listar 12, 24 ou 36 produtos, os número 12, 24 e 36 são as quantidade máxima de post’s dentro de uma página.

Esse número é possível setar no admin:
No menu do admin, localize a opção ‘Configurações (ou Settings)’ e clique em Leitura (ou Reading).
Vai abrir uma página, altere o valor do campo ‘As páginas do blog mostram no máximo’ (ou Blog pages show at most). Clique em Salvar (ou Salve Changes).

Criei uma função para ser usada e reaproveitada em vários projetos:

function total_de_posts_por_pagina(){
    global $wp_query;
    return $wp_query->query_vars['posts_per_page']);
}

Como ativar temas no WPMU

Daqui a pouco eu vou montar uma sessão chamada “Não se mate! Tudo tem uma solução” pq tem horas q as coisas ficam tao sem sentido que dá vontade de largar tudo.

Agora pouco eu tive um momento desses. Quando é criado um tema para um WP normal (aquele que só comporta um site) você vai em Aparências >> Themes e está lá, o seu lindo tema está disponível para ser ativado.

Quando você tem um WPMU (aquele que é possível ter vários sites sobre o mesmo domínio), além do painel do site tem um paniel acima que abrange todos os temas e é nele que deve estar o seu tema. Ative o mesmo para que ele esteja disponível para ser ativado em todos os outros blogs (ou sites).

Se você incluiu o tema o mesmo está gerando o erro “s seguintes temas foram instalados mas incompletamente. Os temas devem possuir uma folha de estilos e um modelo.”, significa que o style.css não foi incluído no functions.php.

Agora, se mesmo tendo feito tudo isso e o tema não aparece, copie e cole o trecho a seguir (só troque o nome do tema, por favor) em um arquivo style.css que o problema vai ser resolvido.

/*
Theme Name: Twenty Eleven
Theme URI: http://wordpress.org/extend/themes/twentyeleven
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.
Version: 1.5
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: dark, light, white, black, gray, one-column, two-columns, left-sidebar, right-sidebar, fixed-width, flexible-width, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
Text Domain: twentyeleven
*/

Adicionar página no menu dentro do Admin

A primeira vez q eu fiz já estava pronto e eu só copiei/colei. Ai fica fácil. Dessa vez eu tive q criar do ZERO.

Ao procurar no google, eu achei um artigo do blog WPSnipp

Copiei o código e funcionou!!!

Lembrando q add_menu_page adiciona um novo item no menu e add_submenu_page é um submenu do item adicionado.

Trecho retirado do blog:

function theme_options_panel(){
     add_menu_page('Theme page title', 'Theme menu label', 'manage_options', 'theme-options', 'wps_theme_func');
     add_submenu_page( 'theme-options', 'Settings page title', 'Settings menu label', 'manage_options', 'theme-op-settings', 'wps_theme_func_settings');
     add_submenu_page( 'theme-options', 'FAQ page title', 'FAQ menu label', 'manage_options', 'theme-op-faq', 'wps_theme_func_faq');
}
add_action('admin_menu', 'theme_options_panel');
function wps_theme_func(){
     echo '<div class="wrap"><div id="icon-options-general" class="icon32"><br></div>
     <h2>Theme</h2></div>';
}
function wps_theme_func_settings(){
     echo '<div class="wrap"><div id="icon-options-general" class="icon32"><br></div>
     <h2>Settings</h2></div>';
}
function wps_theme_func_faq(){
     echo '<div class="wrap"><div id="icon-options-general" class="icon32"><br></div>
     <h2>FAQ</h2></div>';
}

Campos Personalizados em Custom Post Type

Acabei de querer me matar ! Semana passada eu codei (ou pelo menos eu vi) esse trecho de código e hoje eu não lembro!!!!! OMG, que raiva !!!!

O código é esse gentiiii:

add_action("add_meta_boxes", "admin_init");
 
function admin_init(){
  add_meta_box("credits_meta", "Design & Build Credits", "credits_meta", "livros", "normal", "low");
}

function credits_meta() {
  global $post;
  $custom = get_post_custom($post->ID);
  $designers = $custom["designers"][0];
  $developers = $custom["developers"][0];
  $producers = $custom["producers"][0];
  ?>
  <p><label>Designed By:</label><br />
  <textarea cols="50" rows="5" name="designers"><?php echo $designers; ?></textarea></p>
  <p><label>Built By:</label><br />
  <textarea cols="50" rows="5" name="developers"><?php echo $developers; ?></textarea></p>
  <p><label>Produced By:</label><br />
  <textarea cols="50" rows="5" name="producers"><?php echo $producers; ?></textarea></p>
  <?php
}

Fonte: iMaster