<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Staicu Ionuţ-Bogdan &#187; WordPress</title>
	<atom:link href="http://www.iamntz.com/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iamntz.com</link>
	<description>the Frontend Developer</description>
	<lastBuildDate>Mon, 23 Jan 2012 04:55:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>WordPress Emag Profitshare 2.0.6</title>
		<link>http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 11:42:08 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[Goodies]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Profitshare]]></category>
		<category><![CDATA[Profitshare]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2690</guid>
		<description><![CDATA[Aseară am prins puțin timp și am făcut mici modificări la cel mai tare plugin de WordPress: emag profitshare. S-au întâmplat următoarele: Am rezolvat o problemă ce nu permitea scurtarea link-urilor în momentul în care se instala plugin-ul pentru prima dată (și de care s-au plâns mai mulți aici) Dacă nu schimbi codul profithsare (sau [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/'>WordPress Emag Profitshare 2.0.6</a>. <br/>
	<a href='http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Aseară am prins puțin timp și am făcut mici modificări la cel mai tare plugin de WordPress: <a href="http://wordpress.org/extend/plugins/profitshare/">emag profitshare</a>. S-au întâmplat următoarele:</p>
<ul>
<li>Am rezolvat o problemă ce nu permitea scurtarea link-urilor în momentul în care se instala plugin-ul pentru prima dată (și de care s-au plâns mai mulți <a href="http://www.iamntz.com/2573/frontend-developer/wordpress-emag-profitshare-2-0/">aici</a>)</li>
<li>Dacă nu schimbi codul profithsare (sau lași gol) va fi folosit codul asociat contului meu și vei fi informat de treaba asta.</li>
<li>Am modificat opțiunea de „quick profitshare”. Deoarece aparent nimeni nu folosește admin bar, în colțul din dreapta-jos apare un input în care poți introduce un link spre emag. Apeși Enter și ți se generează un link scurt.</li>
<li>Am organizat un pic readme.txt.</li>
</ul>
<p>Păreri? Sugestii? Probleme?</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/'>WordPress Emag Profitshare 2.0.6</a>. <br/>
	<a href='http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2690/frontend-developer/wordpress-emag-profitshare-2-0-6/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress: listează custom fields într-un mod&#8230; custom</title>
		<link>http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 03:00:05 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress tricks]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2330</guid>
		<description><![CDATA[Custom fields (CF) sunt o modalitate excelentă de a realiza lucruri mărețe și de a ajunge pe nebănuite culmi ale gloriei personale. Ok, poate nici chiar așa, dar&#8230; Pe acolo. Cu toate astea, WordPress nu oferă prea multe funcții utile pentru CF. Avem câteva funcții meta-related, dar toate funcțiile sunt prea&#8230; generice. Să zicem că [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/'>WordPress: listează custom fields într-un mod&#8230; custom</a>. <br/>
	<a href='http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Custom fields (CF) sunt o modalitate excelentă de a realiza lucruri mărețe și de a ajunge pe nebănuite culmi ale gloriei personale. Ok, poate nici chiar așa, dar&#8230; Pe acolo.</p>
<p>Cu toate astea, WordPress nu oferă prea multe funcții utile pentru CF. Avem <a href="http://codex.wordpress.org/Custom_Fields#Function_Reference">câteva funcții</a> meta-related, dar toate funcțiile sunt prea&#8230; generice. Să zicem că faci un sistem de filtrare &#8211; cum fac eu &#8211; și pui totul în CF (pentru că vrei să faci o&#8230; filtrare un pic mai târziu). Tot ce are legătură cu filtrele respective pui la modul <code>_custom_filters_NUME_FILTRU</code>. (dacă primul caracter este underscore, custom field-ul nu este afișat în admin)</p>
<p>Cum poți lua CF ce încep cu <code>_custom_filters</code>?</p>
<h4>Varianta cu funcțiile WordPress (documentate)</h4>
<p>Luăm toate CF pentru postul curent, facem un foreach, verificăm dacă prefixul este cel dorit și ne facem treaba.</p>
<pre class="brush: php; title: ; notranslate">
$prefix = '_custom_filters';
$custom_fields = get_post_custom($post_id);
foreach( $custom_fields as $custom_field ){
	if( substr( $custom_field, 0, strlen($prefix) ) == $prefix ){
		// do some awesome thing with my custom field code
	}
}
</pre>
<h4>Varianta geek-ish</h4>
<p>Facem un query în baza de date și luăm fix ce ne trebuie.</p>
<pre class="brush: php; title: ; notranslate">
function get_my_post_meta( $post_id = null, $meta_prefix = '' ){
	if( !isset( $post_id ) ){ return; }
	global $wpdb;
	return $wpdb-&gt;get_results( $wpdb-&gt;prepare(&quot;
	SELECT meta_key, meta_value, meta_id, post_id
		FROM $wpdb-&gt;postmeta
		WHERE
			post_id = %d AND
			meta_key LIKE %s
		ORDER BY meta_key, meta_id&quot;, $post_id, $meta_prefix.'%') );
} // get_my_post_meta

$custom_fields = get_my_post_meta( $post_id, '_custom_filters' );
foreach( $custom_fields as $custom_field ){
		// do some awesome thing with my custom field code
}
</pre>
<h5>Atenție!</h5>
<p>Această funcție NU folosește caching. Ceea ce înseamnă că ar ptea avea efecte&#8230; nedorite în cazul unui site cu mulți utiilzatori.<br />
Nu am prezentat o metodă de cacheing deoarece eu am avut nevoie de această funcție strict pe partea de administrare. Dacă ai nevoie de o astfel de funcție pe partea de client, caută mai multe detalii <a href="http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/cache.php">aici</a> sau lasă un comentariu la acest post.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/'>WordPress: listează custom fields într-un mod&#8230; custom</a>. <br/>
	<a href='http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2330/frontend-developer/wordpress-listeaza-custom-fields-intr-un-mod-custom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Create a &#8220;featured article&#8221; admin panel in WordPress</title>
		<link>http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 09:01:43 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Custom Fields]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Write Panels]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=2268</guid>
		<description><![CDATA[I&#8217;ve seen several premium WordPress themes that used different kinds of featured sliders for home page. Is nothing wrong here, it&#8217;s a good way of putting important thing first. What it bother me is this silly thing: to add an article to the feature slider you have to use a certain tag. Or worse, a [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/'>Create a &#8220;featured article&#8221; admin panel in WordPress</a>. <br/>
	<a href='http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/08/2011-08-26_11131.png"><img src="http://content.iamntz.com.s3.amazonaws.com/wp-content/uploads/2011/08/2011-08-26_11131-279x300.png" alt="" title="2011-08-26_1113[1]" width="279" height="300" class="alignleft size-medium wp-image-2269" /></a></p>
<p>I&#8217;ve seen several premium WordPress themes that used different kinds of featured sliders for home page. Is nothing wrong here, it&#8217;s a good way of putting important thing first. What it bother me is this silly thing: to add an article to the feature slider you have to use a certain tag. Or worse, a certain category! That&#8217;s SILLY and very not user friendly (don&#8217;t forget that many editors are very non-technics!).</p>
<p>I developed several WP theme over the last two years and I used to make things in the very same way. Until I had few complains from final clients (sometimes I work for the middle man) that the „tag” way is very user-not-too-friendly. So I had to find another way of doing this.</p>
<h3>Custom Fields way</h3>
<p>The most easy way of having a way to sort things up is the use of <a href="http://codex.wordpress.org/Custom_Fields">custom fields</a>. So you can add a custom field, named let&#8217;s say&#8230; <code>featured</code> with the value <code>true</code>. Or something similar. This way you can add some description too, a different title and other goodies.</p>
<h5>Custom fields issues</h5>
<p>Even if custom fields sounds the right choice, there might be a small problem. Let&#8217;s say your awesome blog has only one featured post per month (or even week). As a very busy man, you will probably forget if the custom field was <code>feature</code> or <code>featured</code>. And the value was <code>true</code>, <code>yes</code> or just <code>1</code> ? Hmmm&#8230;</p>
<p>The solution is&#8230;</p>
<h3>Custom Fields with Write Panels!</h3>
<p>How about this: a very neat panel with a checkbox? That&#8217;s all you will need. The whole thing is just one click away!</p>
<p>Is a very easy way of doing the whole thing and very easy to implement.</p>
<p>The whole code is here: <span id="more-2268"></span><br />
<script src="https://gist.github.com/1172977.js"> </script></p>
<p>I like to think that my code is pretty easy to follow so doesn&#8217;t need too many explanations. Even so, there are some things to consider:</p>
<ul>
<li>I have no idea how custom fields works for huge sites. I had around 5000 unique users / days and i had no visible performance drops. </li>
<li>You must place the content of the gist above on <code>functions.php</code> or into <code>wp-content/mu-plugins/featured_panel.php</code>. Either way, the code will just work. You don&#8217;t have to do anything else on admin. I recommend the second way if you change your themes a lot.</li>
<li>You can remove title/description fields from the <code>$ntz_featured_fields</code> array. You can also add more fields (eg: custom image).</li>
<li>You still need to do some other changes on your theme files! Keep reading!</li>
</ul>
<h3>Done with the admin. What&#8217;s next?</h3>
<p>Well&#8230; After we did the admin part, we need a way of displaying the whole thing for regular users, no?</p>
<h5>The not-so-awesome way of doing it</h5>
<p>Believe it or not, there is a not-so-awesome way of doing this. And a LOT of guys do this! The „regular” versions (that uses tags or categories to display the featured articles) are doing the job this way:</p>
<pre class="brush: php; title: ; notranslate">
query_posts( 'posts_per_page=3&amp;tag=featured' );
while (have_posts()){ the_post();
	// put your awesome-wanna-be code here
}
wp_reset_query();
</pre>
<p>Why I consider this wa a bad way of doing the job? Because you can easily forget about <code>wp_reset_query()</code> and you featured code may interfere with your other parts of your code.</p>
<h5>The awesome way of doing it</h5>
<p>Did you ever heard about custom query? How about this:</p>
<pre class="brush: php; title: ; notranslate">
$featured_posts = new WP_Query();
$featured_posts-&gt;query( 'posts_per_page=3&amp;tag=featured' );
while ($featured_posts-&gt;have_posts()){ $featured_posts-&gt;the_post();
	// put your awesome code here
}
</pre>
<h5>The awesome way of custom fields</h5>
<p>So, instead of using the tag-thing, we can do it like this:</p>
<pre class="brush: php; title: ; notranslate">
$featured_posts = new WP_Query();
$featured_posts-&gt;query( 'posts_per_page=3&amp;meta_key=_ntz_is_featured&amp;meta_value=1' );
while ($featured_posts-&gt;have_posts()){ $featured_posts-&gt;the_post();
	global $post;
	// you have two variables to play with: the title and the description;
	// If you added more fields, this is how you can use them
	$featured_title = get_post_meta( $post-&gt;ID, '_ntz_featured_title', 1);

		$featured_title = !empty( $featured_title ) ? $featured_title : get_the_title();
	$featured_description = get_post_meta( $post-&gt;ID, '_ntz_featured_description', 1);
		$featured_description = !empty( $featured_description ) ? $featured_description : get_the_excerpt();

	// put your awesome code here
}
</pre>
<p>That&#8217;s all! I didn&#8217;t cover the js-related part of the slider. You can use any script available out there.</p>
<p>So&#8230; Enjoy &#038; start writting quality code!</p>
<p><strong>BTW</strong>: if you want to know how to add a featured slider totally independent of your blog posts, very easy to manage &#038; reorder, please let me know!</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/'>Create a &#8220;featured article&#8221; admin panel in WordPress</a>. <br/>
	<a href='http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/2268/frontend-developer/create-a-featured-article-admin-panel-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress RSS Graceful Degradation</title>
		<link>http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/#comments</comments>
		<pubDate>Sun, 08 May 2011 13:28:03 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Graceful Degradation]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1894</guid>
		<description><![CDATA[Fiind un cititor avid de bloguri, cel mai mult mă enervează că mă enervează două lucruri: Feed-ul parțial; Feed-ul defect; Despre feed-ul parțial nu prea am ce să zic. Așa au ales „stăpânii” blogurilor respective, n-am ce le face. În principiu, asta înseamnă că șansele de a face un click să citesc tot articolul sunt [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/'>WordPress RSS Graceful Degradation</a>. <br/>
	<a href='http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Fiind un cititor avid de bloguri, cel mai mult mă enervează că mă enervează două lucruri:</p>
<ol>
<li>Feed-ul parțial;</li>
<li>Feed-ul defect;</li>
</ol>
<p>Despre feed-ul parțial nu prea am ce să zic. Așa au ales „stăpânii” blogurilor respective, n-am ce le face. În principiu, asta înseamnă că șansele de a face un click să citesc tot articolul sunt mari doar dacă este un articol ce promite foarte mult din titlu și dintr-un excerpt. Ceea ce se întâmplă destul de rar&#8230;</p>
<p>Feed-ul defect se întâmplă atunci când bloggerul bagă în post un film ce nu este redat (cum trebuie sau deloc) de Google Reader (sau orice alt reader). Apărând un text ce este posibil să comenteze pe marginea video-ului dar&#8230; eu să nu văd niciun video.</p>
<p>Prin urmare, am zis să încerc să găsesc o rezolvare: <code>str_replace</code> <img src='http://www.iamntz.com/wp-includes/images/smilies/biggrin.gif' alt=':D' class='wp-smiley' />  <span id="more-1894"></span></p>
<pre class="brush: php; title: ; notranslate">
function ntz_rss_graceful_degradation($content) {

	global $post;

	$embed_err = &quot;
	&lt;p style='color:#ccc'&gt;
		&lt;strong&gt;Atentie!&lt;/strong&gt;
		Acest post contine elemente audio/video ce nu sunt vizibile în feed-ul RSS. Apasă &lt;a href='&quot; . get_permalink($post-&gt;ID) . &quot;'&gt;AICI&lt;/a&gt; pentru a vedea versiunea integrală
	&lt;/p&gt;&lt;object&quot;;

	$content = str_ireplace('&lt;object', $embed_err, $content);
	return $content;
}
add_filter('the_content_rss','ntz_rss_graceful_degradation');
add_filter('the_excerpt_rss','ntz_rss_graceful_degradation');
add_filter('the_content_feed','ntz_rss_graceful_degradation');
</pre>
<p>Toată povestea asta se pune în <code>functions.php</code> (în wp-content/themes/TEMA_TA/functions.php). Și asta e tot.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/'>WordPress RSS Graceful Degradation</a>. <br/>
	<a href='http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1894/frontend-developer/wordpress-rss-graceful-degradation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plugin-uri „forțate” în WordPress</title>
		<link>http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 06:51:23 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1717</guid>
		<description><![CDATA[Ieri am aflat o treabă foarte utilă despre plugin-urile din WordPress. Să detaliem. Ca dezvoltator de teme personalizate sunt pus de multe ori în situația în care am de ales: ori pun toate fișierele cu funcții custom (ce nu sunt neapărat legate de temă cât de funcționalitatea site-ului; ex: custom taxonomies, custom post type etc) [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/'>Plugin-uri „forțate” în WordPress</a>. <br/>
	<a href='http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Ieri am aflat o treabă foarte utilă despre plugin-urile din WordPress. Să detaliem.</p>
<p>Ca dezvoltator de teme personalizate sunt pus de multe ori în situația în care am de ales: ori pun toate fișierele cu funcții custom (ce nu sunt neapărat legate de temă cât de funcționalitatea site-ului; ex: custom taxonomies, custom post type etc) într-un director al temei și le includ din <code>functions.php</code>, ori fac un plugin normal și îi explic clientului cum să-l activeze. De multe ori clientul este doar un intermediar, deci ar însemna să mă joc un fel de telefonul fără fir.</p>
<h4>Cum ar fi dacă&#8230;</h4>
<p>Cum ar fi dacă ai putea să faci plugin-uri ce se activează singure și nu pot fi dezactivate? Ei bine, asta e șmecheria de care ți-am zis că am aflat-o ieri.<span id="more-1717"></span></p>
<p>Orice fișier pui în <code>wp-content/mu-plugins</code> va fi încărcat automat, ca plugin. <strong>Atenție</strong>! Treaba asta merge doar dacă ai fișierul direct în folderul <code>mu-plugins</code>, fără alte sub-directoare.</p>
<p>În acest fel poți livra tema de wordpress sub forma unui folder numit <code>wp-content</code> ce are următoarea structură:</p>
<pre class="brush: bash; title: ; notranslate">
/wp-content/themes/tema_custom
/wp-content/mu-plugins/index.php
/wp-content/mu-plugins/custom_post_type.php
/wp-content/mu-plugins/custom_fields.php
...
</pre>
<p>Îi spui clientului: „bă, asta o extragi în root” și&#8230; Cam asta e.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/'>Plugin-uri „forțate” în WordPress</a>. <br/>
	<a href='http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1717/frontend-developer/plugin-uri-fortate-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Folosirea uploader-ului din WordPress</title>
		<link>http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 15:23:08 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[uploader]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1633</guid>
		<description><![CDATA[Zilele astea mă tot distrez cu un WordPress mai customizat decât restul făcute până acum. Iar una din treburile ce trebuiesc făcute o reprezintă un uploader pentru imagini. Locurile în care ar fi nevoie de așa ceva sunt nenumărate. De exemplu: avatar-uri, imagini pentru slidere etc. Primul impuls a fost să scriu un script PHP [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/'>Folosirea uploader-ului din WordPress</a>. <br/>
	<a href='http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://content.screencast.com/users/iamntz/folders/Jing/media/67461cff-468c-4cee-88d7-e8fd3cacba41/2011-03-13_1719.png" class="alignright" width="498" height="84" style="border:1px solid #ccc" />Zilele astea mă tot distrez cu un WordPress mai customizat decât restul făcute până acum. Iar una din treburile ce trebuiesc făcute o reprezintă un uploader pentru imagini. Locurile în care ar fi nevoie de așa ceva sunt nenumărate. De exemplu: avatar-uri, imagini pentru slidere etc.</p>
<p>Primul impuls a fost să scriu un script PHP cu care fac upload. Dar mi-am dat seama că este o muncă inutilă din moment ce WordPress-ul are un uploader decent. Prin urmare, m-am apucat să caut ce și cum. Pentru a deschide uploaderul este necesar să faci următorii pași:</p>
<h5>Incluzi uploaderul și thickbox</h5>
<pre class="brush: php; title: ; notranslate">
wp_enqueue_script( array('jquery',  'media-upload', 'thickbox') );
</pre>
<p>Pasul ăsta se face chiar la init. Totuși, ar fi bine să ai grijă să nu încarci toate treburile și în fișierele temei. <img src='http://www.iamntz.com/wp-includes/images/smilies/wink.gif' alt=';)' class='wp-smiley' /> </p>
<h5>Markup</h5>
<p>Eu am avut nevoie de toată povestea asta pentru a adăuga câte o imagine pentru fiecare custom post type. Are „eticheta” <em>category picture</em> deoarece unui utilizator de rând sunt șanse mai mici să ceară explicații suplimentare. <span id="more-1633"></span></p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;
	&lt;label&gt;Category 1 Picture&lt;/label&gt;
	&lt;input type=&quot;text&quot; name=&quot;section_pic_url[]&quot; class=&quot;ntzUploadTarget&quot; /&gt;
	&lt;button class=&quot;ntzUploadTrigger button-secondary&quot;&gt;Upload&lt;/button&gt;
&lt;/p&gt;
&lt;p&gt;
	&lt;label&gt;Category 2 Picture&lt;/label&gt;
	&lt;input type=&quot;text&quot; name=&quot;section_pic_url[]&quot; class=&quot;ntzUploadTarget&quot; /&gt;
	&lt;button class=&quot;ntzUploadTrigger button-secondary&quot;&gt;Upload&lt;/button&gt;
&lt;/p&gt;
</pre>
<p>Nu contează în ce ordine sunt elementele (sau nici măcar CE elemente!), cât timp este vorba de:</p>
<ol>
<li>Un wrapper să le conțină pe toate;</li>
<li>Un element să declanșeze uploaderul (poate fi ORICE element, <code>button</code>, <code>a</code>, <code>span</code> etc);</li>
<li>Un element care poate fi salvat în <code>form</code>: <code>input</code> (poate fi și hidden) sau <code>textarea</code>.</li>
</ol>
<h5>JavaScript</h5>
<p>Adaugi toată treaba de mai jos undeva după formularul ce cuprinde markup-ul de mai sus și ești gata.</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script&gt;
	jQuery(document).ready(function($) {
		var oldSendToEditor = window.send_to_editor;
		$('.ntzUploadTrigger').click(function() {
			var ntzUploadTarget = $(this).parent().find('.ntzUploadTarget');
			window.send_to_editor = function(html) {
				imgurl = $('img',html).attr('src') || $(html).attr('src');
				ntzUploadTarget.val(imgurl).focus().blur();
				ntzUploadTarget = '';
				tb_remove();
				if(typeof(oldSendToEditor)=='function') {
					window.send_to_editor = oldSendToEditor;
				}
			}
			tb_show('', 'media-upload.php?type=image&amp;amp;TB_iframe=true');
			return false;
		});
	});
&lt;/script&gt;
</pre>
<p>Enjoy!</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/'>Folosirea uploader-ului din WordPress</a>. <br/>
	<a href='http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1633/frontend-developer/folosirea-uploader-ului-din-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Redenumirea unei secțiuni din wp-admin</title>
		<link>http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 05:48:44 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress tricks]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1487</guid>
		<description><![CDATA[De-a lungul timpului am tot făcut tot felul de site-uri bazate pe WordPress. De la simple bloguri până la site-uri de mari agenții web. Prin urmare, am fost nevoit să improvizez și să adaptez de nenumărate ori. Când au apărut custom taxonomy și custom post type am simțit un fel de binecuvântare. Nu mai trebuia [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/'>Redenumirea unei secțiuni din wp-admin</a>. <br/>
	<a href='http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://content.screencast.com/users/iamntz/folders/Jing/media/00cee2d0-d940-4262-8f55-88597c1a9226/2011-02-07_0723.png" title="Redenumirea unei sectiuni din wp-admin" class="alignleft" width="151" height="126" /> De-a lungul timpului am tot făcut tot felul de site-uri bazate pe WordPress. De la simple bloguri până la site-uri de mari agenții web. Prin urmare, am fost nevoit să improvizez și să adaptez de nenumărate ori. Când au apărut custom taxonomy și custom post type am simțit un fel de binecuvântare. Nu mai trebuia să mă lupt cu custom fields și alte bucurii d&#8217;astea. </p>
<p>Și, cu toate acestea, o chestie enervantă căreia nu îi găseam soluție a fost redenumirea secțiunilor implicite din wp-admin. Cea care îmi stătea ca un ghimpe în coaste fiind fix secțiunea <em>Posts</em>. La o adică, ce să caute o astfel de secțiune într-un site de prezentare de rochii, de exemplu? Prima soluție, cea mai la îndemână, a fost să-i spun clientului: <em>„nu te atinge de partea aia!”</em>. Cum limitarea unui utilizator cu care eu nu aveam contact (de obicei lanțul arată cam așa: eu -> clientul meu (agenție) -> clientul agenției -> clientul final) ieșea din discuție (se știe că telefonul fără fir a avut întotdeauna un succes răsunător), a trebuit să găsesc o altă modalitate. Una ceva mai&#8230; user friendly ce nu instigă la click-uri aiurea.</p>
<h5>Încercarea nr 2</h5>
<p><span id="more-1487"></span>A doua soluție &#8211; cea pe care am și folosit-o la câteva proiecte &#8211; a fost să îi spun clientului meu: transmite-i că secțiunea „posts” este pentru știri (sau ce era nevoie la proiectul respectiv). Treaba a mers fără probleme la vreo patru sau cinci proiecte dar, zilele trecute am dat <a href="http://new2wp.com/snippet/change-wordpress-posts-post-type-news/">peste o treabă foarte simplă</a> ce face fix ce aveam nevoie: redenumește secțiunea „Posts” în ce am eu nevoie.</p>
<h5>Încercarea nr. 3</h5>
<p>Simplu și eficient. Fără mare bătaie de cap, pui asta în <code>functions.php</code>, eventual schimbi textele cu ce ai nevoie și&#8230; aia e!</p>
<pre class="brush: php; title: ; notranslate">
function change_post_menu_label() {
	global $menu, $submenu;
	$menu[5][0] = 'News';
	$submenu['edit.php'][5][0] = 'News';
	$submenu['edit.php'][10][0] = 'Add News';
	$submenu['edit.php'][16][0] = 'News Tags';
	echo '';
}
function change_post_object_label() {
	global $wp_post_types;
	$labels = &amp;$wp_post_types['post']-&gt;labels;
	$labels-&gt;name = 'News';
	$labels-&gt;singular_name = 'News';
	$labels-&gt;add_new = 'Add News';
	$labels-&gt;add_new_item = 'Add News';
	$labels-&gt;edit_item = 'Edit News';
	$labels-&gt;new_item = 'News';
	$labels-&gt;view_item = 'View News';
	$labels-&gt;search_items = 'Search News';
	$labels-&gt;not_found = 'No News found';
	$labels-&gt;not_found_in_trash = 'No News found in Trash';
}
add_action( 'init', 'change_post_object_label' );
add_action( 'admin_menu', 'change_post_menu_label' );
</pre>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/'>Redenumirea unei secțiuni din wp-admin</a>. <br/>
	<a href='http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1487/frontend-developer/redenumirea-unei-sectiuni-din-wp-admin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Filtrarea URL-urilor comentatorilor</title>
		<link>http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 15:32:22 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress tricks]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1452</guid>
		<description><![CDATA[Ca deținător de blog cu vechime (am împlinit vreo trei ani acum o săptămână; să-mi trăiască, mulțumesc) am fost întotdeauna enervat la maxim de acei comentatori ce completează field-ul URL razna. O singură dată am încercat să elimin chestia asta, apelând la bunul simț comentatorilor. N-a fost să fie&#8230; Și dacă tot am făcut o [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/'>Filtrarea URL-urilor comentatorilor</a>. <br/>
	<a href='http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Ca deținător de blog cu vechime (am împlinit vreo trei ani acum o săptămână; să-mi trăiască, mulțumesc) am fost întotdeauna enervat la maxim de acei comentatori ce completează field-ul URL razna.</p>
<p>O singură dată am încercat să elimin chestia asta, apelând la bunul simț comentatorilor. N-a fost să fie&#8230; Și dacă tot am făcut <a href="http://www.boio.ro/boio-ro-cel-mai-bun-tech-blog-din-romania/">o temă WP</a> de curând, am implementat treaba asta în <code>functions.php</code>:</p>
<pre class="brush: php; title: ; notranslate">
add_filter('pre_comment_author_url', 'ntz_url_check');
function ntz_url_check($url_submited){
	if(is_user_logged_in()) {
		global $current_user;
	  get_currentuserinfo();
		if($current_user-&gt;wp_user_level == 10) {
			return $url_submited;
		}
	}
	$url_match = '~^(?:https?://)?(?:[\w]+\.)(?:\.?[\w]{2,})+$~';
	$url = parse_url(str_replace('www.', '', $url_submited));

	// =================================================
	// = Domenii interzise in url-urile comentatorilor =
	// =================================================
	$forbidden_urls = array('google.com', 'iamntz.com', 'google.ro');

	return ( (!preg_match($url_match, $url_submited) || in_array($url['host'], $forbidden_urls) ) ? '' : $url_submited );
}
</pre>
<p>Pui în array domeniile nedorite (fără www sau http; adaugă WP treburile astea) și aia e. Dacă userul este administrator, poate avea orice url. Cu <a href="http://codex.wordpress.org/Roles_and_Capabilities#User_Levels"><code>wp_user_level</code></a> alegi ce useri pot avea liber la orice link-uri.</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/'>Filtrarea URL-urilor comentatorilor</a>. <br/>
	<a href='http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1452/frontend-developer/filtrarea-url-urilor-comentatorilor/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jQuery vs $ vs WordPress</title>
		<link>http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 13:09:49 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1446</guid>
		<description><![CDATA[Ca un făcut, de vreo trei-patru zile sunt întrebat același lucru: de ce nu merge $ în WordPress atunci când folosești jQuery? Răspunsul scurt este jQuery.noConflict();. Răspunsul un pic mai lung este următorul: WP pune la dispoziția programatorilor mai multe librării , gata de a fi apelate printr-un simplu wp_enqueue_script(), astfel încât să nu existe [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/'>jQuery vs $ vs WordPress</a>. <br/>
	<a href='http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Ca un făcut, de vreo trei-patru zile sunt întrebat același lucru: de ce nu merge <code>$</code> în WordPress atunci când folosești jQuery?</p>
<p>Răspunsul scurt este <code><a href="http://api.jquery.com/jQuery.noConflict/">jQuery.noConflict();</a></code>. Răspunsul un pic mai lung este următorul:</p>
<p>WP pune la dispoziția programatorilor mai multe librării <acronym title="Javascript - http://w3.org">JS</acronym>, gata de a fi apelate printr-un simplu <code><a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">wp_enqueue_script()</a></code>, astfel încât să nu existe tot felul de dubioșenii gen jQuery inclus de 4 ori (văzut!). Și cum jQuery nu este singura librărie care folosește $, pot apărea probleme. Prin urmare, jQuery este inclus apelându-se <code>jQuery.noConflict();</code>, astfel încât, fiecare e cu aia a mă-sii, ca să zic așa.</p>
<h3>Vestea bună</h3>
<p>Vestea bună este că nu trebuie să înlocuiești fiecare <code>$</code> cu <code>jQuery</code> pentru a face totul să meargă. Ai putea să faci și asta, dar „costă” prea mulți kb. Te poți folosi de următoarea treabă:</p>
<pre class="brush: jscript; title: ; notranslate">
jQuery(document).ready(function($){
 console.log($('div').length);
});
</pre>
<p>Observi parametrul <code>$</code> la funcția anonimă? Eh, ăla face toată treaba.</p>
<p>Enjoy!</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/'>jQuery vs $ vs WordPress</a>. <br/>
	<a href='http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1446/frontend-developer/jquery-vs-vs-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cum schimbi prefixul ?</title>
		<link>http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 12:37:00 +0000</pubDate>
		<dc:creator>Staicu Ionuț-Bogdan</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress tricks]]></category>

		<guid isPermaLink="false">http://www.iamntz.com/?p=1322</guid>
		<description><![CDATA[Azi a fost nevoie să schimb prefixul unei instalări de WordPress. De ce? Irelevant. Cert este că din prefix_vechi_ trebuia schimbat în prefix_nou_, altfel, după ce am schimbat în wp-config.php $table_prefix = 'prefix_nou_';, nu mă puteam autentifica, primind eroarea You do not have sufficient permissions to access this page.. Rezolvarea? Foarte simplă. Deschizi un PhpMyAdmin, [...]
	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/'>Cum schimbi prefixul ?</a>. <br/>
	<a href='http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/#postcomment'>Adaugă un comentariu!</a>]]></description>
			<content:encoded><![CDATA[<p>Azi a fost nevoie să schimb prefixul unei instalări de WordPress. De ce? Irelevant. Cert este că din <code>prefix_vechi_</code> trebuia schimbat în <code>prefix_nou_</code>, altfel, după ce am schimbat în <code>wp-config.php</code> <code>$table_prefix  = 'prefix_nou_';</code>, nu mă puteam autentifica, primind eroarea <strong>You do not have sufficient permissions to access this page.</strong>. Rezolvarea? Foarte simplă. Deschizi un PhpMyAdmin, alegi baza de date, faci click pe tab-ul SQL și execuți următoarele două comenzi:</p>
<pre class="brush: sql; title: ; notranslate">
UPDATE `prefix_nou_usermeta` SET `meta_key` = REPLACE(`meta_key`, 'prefix_vechi_', 'prefix_nou_');
UPDATE `prefix_nou_options` SET `option_name` = 'prefix_nou_user_roles' WHERE `option_name` = 'prefix_vechi_user_roles' AND `blog_id` = 0;
</pre>
<p>(nu uita să schimbi <code>prefix_vechi_</code> și <code>prefix_nou_</code>!)</p>

	<br/>

	Ai terminat de citit postul <a href='http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/'>Cum schimbi prefixul ?</a>. <br/>
	<a href='http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/#postcomment'>Adaugă un comentariu!</a>]]></content:encoded>
			<wfw:commentRss>http://www.iamntz.com/1322/frontend-developer/cum-schimbi-prefixul/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

