GSY http://www.gsy-design.com Freelance Web Developer Sun, 05 Oct 2014 10:36:46 +0000 en-US hourly 1 A Smart Way to Replace Words or Terms in WordPress http://www.gsy-design.com/a-smart-way-to-replace-words-or-terms-in-wordpress/ http://www.gsy-design.com/a-smart-way-to-replace-words-or-terms-in-wordpress/#comments Sun, 17 Aug 2014 22:22:35 +0000 http://www.gsy-design.com/?p=647 Introduction

Suppose there is a special word that appears on many places in the content of your website. It could be:

  • the company name
  • a nickname
  • a band
  • a certain phrase
  • etc.

and if you need to change it on every single place, post or page in your WordPress site it would be a heavy work. If you still would have managed it, but after some time you change your mind or realize that those word has to be changed again for some reason, would you feel very smart then?

Well, don’t worry as exist a better way. On the following sections I’m going to talk about how to replace those words in a smart and professional way.

How to Filter a Word in The Content?

As you probably noticed, here I said “filter” instead of “change” a word. The reason is that now we are going to use the WordPress hook add_filter to finish our job.

Open your file functions.php which is in the root directory of your WordPress theme and put this peace of code:

<?php
add_filter('the_content', 'swrw_filter');

function swrw_filter($content) {
    $old_word = 'our-cool-band';
    $new_word = 'the-best-band';

    $content = str_ireplace($old_word, $new_word, $content);

    return $content;
}
?>

Here we see the use of add_filter. Before showing the content in the browse a filtering process is activated. The callback function swrw_filter gets fired (swrw is our prefix. You should always prefix your functions as they have to be unique. In our case the prefix swrw comes from A Smart Way to Replace Words.).

  • $old_word is our target word going to be searched and replaced.
  • $new_word is the new value of the word going to be replaced.
  • $content as the argument of swrw_filter function represents the content of all posts and pages where the search is going to be done.

Don’t forget to return the new $content which already holds the content with ‘the-best-band’ instead of ”our-cool-band”.

Another thing to pay attention on is that we intentionally used the function str_ireplace() as it is for case-insensitive replace. For case-sensitive replace you can use str_replace().

Is It Possible to Filter Many Words at Тhe Same Time?

Yes, it is possible by using arrays.

<?php
add_filter('the_content', 'swrw_filter');

function swrw_filter($content) {
    $old_words = array(
        'our-cool-band',      // will become 'the-best-band'
        'my-old-nickname',    // will become 'my-new-nickname'
        'my-old-company-name' // will become 'my-new-company-name'
    );
    
    $new_words = array(
        'the-best-band',
        'my-new-nickname',
        'my-new-company-name'
    );

    $content = str_ireplace($old_words, $new_words, $content);

    return $content;
}
?>

How to Filter a Word in The Title?

Well, it’s pretty straightforward. If you want to filter your titles simply put the_title instead of the_content:

<?php
add_filter('the_title', 'swrw_filter');
...
?>

You can have a look at the filter reference as there are also many.

Summary

I think that now we can be called smart people and do you know why? Because all the replacement done here didn’t touch our database at all. I mean that the original content is still the same though it’s not sent to the browser. So you can always remove the filter and changes will be rolled back, whenever you want.

Hm, why don’t I create a plugin for such a filtering and share it with the open community. It could be with some options that an user might choose from.

Hey, smart people, hope you liked the tutorial and comments are alsways welcome! :)

[Edited on 27 August, 2014]

There you go, I made that sort of plugin. I gave it the name of “GSY Content Filter”. You can find it on:

Resources

]]>
http://www.gsy-design.com/a-smart-way-to-replace-words-or-terms-in-wordpress/feed/ 0
How to Generate a .POT File Using Poedit http://www.gsy-design.com/how-to-generate-a-pot-file-using-poedit/ http://www.gsy-design.com/how-to-generate-a-pot-file-using-poedit/#comments Sat, 16 Aug 2014 05:44:26 +0000 http://www.gsy-design.com/?p=616 Introduction

Have you ever used WordPress for your own website or for your clients? Have you ever looked for and installed plugins for it? I guess that your both answers are YES.

So far so good, but what do you do if you need to translate your theme or plugin in your language? You may say that exists a file as .PO which is used especially for that reason. For example by using Poedit and .PO it’s pretty easy to make your translation.

Well, you’re right, but tell me the truth? Have you ever searched for that .PO file within the theme directory or plugin only to find that it’s not there? And if this is your case, what would you do then? Please don’t tell me that you would edit or change the theme… Of course you can use a child theme for that reason, but still it’s not the correct and easy way for that.

The right and professional way is to generate a .POT file. What a pity that the theme author hasn’t created it along with the theme. At least we hope that he had developed it in the correct way, so that to generate a .POT file would make any sense. Here I point to the use of translatable strings.

What is .POT File Used For?

First of all let us clear out what does the abbreviation POT means. Actually it stands for Portable Object Template. This is the file that you get when you extract texts from the application. Normally, you send this file to your translators.

The tool (in our case Poedit) that scans your PHP source will produce a .POT file. This file includes only the original texts, which needs translation.

What is Poedit?

Poedit is a software that offers the best way to translate apps and sites (that use gettext). Thanks to its distraction-free approach, you’ll translate faster and easier with it. Get your hands dirty and download it for free.

10 Steps to Generate a .POT File Using Poedit

Step 1

Download and install Poedit on your machine. My Poedit version is 1.6.7.

Step 2

  • Start Poedit
  • File -> Catalogs manager
  • New – create new translations project
  • Project name – put the name of the main folder of your theme/plugin
  • Browse – select the main folder of your theme/plugin and click OK
  • Close the Catalogs manager

poedit-2-1

poedit-2-2

Please take into consideration that all the entered data is just for example. You must put your own instead. As a matter of fact the entered data is not a dummy one, but these are the steps I followed to create a .POT file for my new WP Plugin “GSY Ajax Recent Posts”.

Step 3

  • File -> New
  • Select “English (United States)”
  • Click OK

poedit-3

Step 4

  • Catalog -> Properties
  • Project name and version – put here the name of your theme/plugin. Here I don’t mean the name of a folder or file, but the actual name. For example the name of my plugin is “GSY Ajax Recent Posts”.
  • Source code charset – select “UTF-8 (recommended)”
  • Click OK

poedit-4

Step 5

  • File -> Save
  • File name – put “en_US.pot”. I know that the .POT file extension is not listed. Instead you will find only .PO. Don’t worry about that, simply type it yourself as “en_US.pot”.
  • Check the directory you’re going to save it in. Must be in the main folder of your theme/plugin.
  • Click Save

poedit-5

Step 6

  • Check your main folder of your theme/plugin. There must be two new files created: “en_US.pot” and “en_US.mo”.
  • Delete the second one “en_US.mo”.

Step 7

  • Catalog -> Properties
  • Go to “Sources paths” tab
  • On the “Paths” section click on “New item”
  • Simply put a dot “.” and press ENTER to make sure it’s saved there

poedit-7

 Step 8

  • Go to “Sources keywords” tab
  • Click on “New item”
  • Type in as much new items as you wish. In my case I used only two because those are used on the plugin only. For more information see “Strings for Translation” in I18n for WordPress Developers.
  • Click OK

poedit-8

Step 9

  • Catalog -> Update from sources
  • If a small window appear asking you to save changes – click on Save

poedit-9

  • Now on your screen you’ll see that the .POT file is filled with all the data that need to be translated.
  • Click on the big button “Save” as shown below:

poedit-9-2

Step 10

  • Close the program Poedit
  • In the main folder of your theme/plugin you’ll see that the file “en_US.mo” is created again. Delete it again.
  • The very much desired and completed file is there: “en_US.pot”.

From now on it’s very easy to start Poedit, open this .POT file and make your translations i.e. your .PO and .MO files.

One thing to pay attention is that if you want to use those files in a plugin and not a theme they must be renamed like that: my-plugin-{locale}.mo where the locale is the language code and/or country code you defined in the constant WPLANG in the file wp-config.php.

Summary

I hope that the current tutorial is clear enough and you learned how in 2 minutes to generate a .POT file using Poedit. I wish I had such a tutorial before I made my first .POT file. Of course I googled a lot and read many articles, but to tell you the truth none of them was that much explainable. If I found an article it was either with an old version of Poedit or missed some key steps. Honestly speaking it took me many ours to find my way.

I’ll be happy to hear your comments and if you do have any advices concerning the topic feel free to share them.

Resources

]]>
http://www.gsy-design.com/how-to-generate-a-pot-file-using-poedit/feed/ 15
Защо е толкова трудно да се поставиш на мястото на другия? http://www.gsy-design.com/%d0%b7%d0%b0%d1%89%d0%be-%d0%b5-%d1%82%d0%be%d0%bb%d0%ba%d0%be%d0%b2%d0%b0-%d1%82%d1%80%d1%83%d0%b4%d0%bd%d0%be-%d0%b4%d0%b0-%d1%81%d0%b5-%d0%bf%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%88-%d0%bd%d0%b0/ http://www.gsy-design.com/%d0%b7%d0%b0%d1%89%d0%be-%d0%b5-%d1%82%d0%be%d0%bb%d0%ba%d0%be%d0%b2%d0%b0-%d1%82%d1%80%d1%83%d0%b4%d0%bd%d0%be-%d0%b4%d0%b0-%d1%81%d0%b5-%d0%bf%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%88-%d0%bd%d0%b0/#comments Fri, 31 Aug 2012 21:50:35 +0000 http://www.gsy-design.com/?p=539 Странно нещо е живота, вече 29 години го изследвам и все не мога да си отговоря на един въпрос. Защо на хората им се вижда толкова трудно да се поставят на мястото на другия, следствие на което не го правят?

Това е тема, която ме вълнува от доста години и толкова съм разсъждавал върху нея и правил наблюдения в тази посока, че спокойно съм събрал материал за написването на една книга. Сигурно се сещате, че едва ли ще издавам книга, но пък реших да ви провокирам като използвам своя нов блог и поставя този въпрос и пред вас. И така, защо е толкова сложно и непосилно да се поставиш на мястото на другия?

Дотук може би една част от читателите не ме разбраха каква ми е основната идея и затова ще се опитам да представя проблема, използвайки илюстрации или просто казано – примери, с които съм се сблъсквал. Искам дебело да подчертая, че това не са измислени ситуация, а реални такива, които едва ли ще ви се сторят твърде далечни, чужди и нереални.

Пример 1: Защо се бавят толкова?

Намираме се в градската поликлиника. Пред лекарския кабинет има 10 души, които очакват да влязат, за да бъдат прегледани. Минават 10 минути, но нищо не се случва. Минават 15 минути, но пак нищо не се случва. Минават 20 минути и напрежението след чакащите започва да расте. Започват да се подмятат реплики от рода на „Абе тоя преди нас, дето влезе, вече 20 минути се бави…“. Малко по-нататък се чува „Абе какво правят тези хора, от 25 минути чакаме, няма ли да излиза вече…“. След още няколко минути напрежението ескалира. Когато пациентът излиза от лекарския кабинет той бива поздравен с думите или по-точно със звуците и думите „Ууу, най-после…“.

Сега се пренасяме в една друга обстановка, където двама души споделят проблемите си. Единият казва, че е ходил на лекар, а лекарят не му е обърнал особено внимание. „Целият преглед приключи за 5 минути“ споделя болният. После продължава „Няма като човек да ме прегледа, да ме изслуша, да ми обясни за заболяването, за лечението и т.н.“.

Ето го и моят въпрос: Защо хората искат тях лекарят да ги преглежда по половин час и повече, а когато трябва да чакат друг човек, който е преглеждан продължително критикуват и се оплакват?! Когато някой се бави в кабинета защо не се поставят на негово място?

Пример 2: Защо градът ни е толкова мръсен?

Говори се, че кметът не прави много по въпроса за чистотата на града. Хората постоянно го критикуват, което предполага, че ако те бяха избрани на тази длъжност съвестно биха се грижили градът да бъде с чисти улици и приятен за живеещите в него. Хм, странно… Тези хора явно не се поставят на мястото на кмета и сякаш не знаят, че не всичко на 100% зависи от него.

Странно ми е защото хиляди пъти съм виждал и продължавам да виждам слизащи граждани от градски автобус, които си изхвърлят билетите на тротоара. Ще кажете „ми като кмета не се е погрижил да има кошчета, така ще е“. Не, аз говоря за случаите когато е имало кошчета в близост, но те не са били използвани по незнайни за мен причини.

Аз бих отишъл и по-далеч. Ами да допуснем, че понякога наистина се случва да няма кошче в близост, защото общината е била небрежна, случва се, при това не рядко. Но не мога да разбера къде е проблема да си сложим билетчето в джоба и при удобен случай или у дома да си го изхвърлим?

Пример 3: Аз какво съм виновна, че момичетата обичаме да сме харесвани, това е нормално!

Интересно встъпление, нали :). Сега ще обясня за какво иде реч като имайте предвид, че имената са измислени.

Мартин е силно влюбен в Елеонора, която дълго време е ухажвал и която се е поддавала на това, а и сама е давала не малко поводи на Мартин. Имам предвид, че е знаела за чувствата на Мартин, но се е оставяла да бъде ухажвана, защото това й дава увереност, че е красива, че е харесвана, че не е загубила своя чар и т.н.

Всичко добре, но идва моментът, в който Мартин вече е с твърде сериозни намерения и прави крачка напред, както постъпват истинските мъже. Какво следва ли, ами не е много трудно да се сетите. При такава една сериозна ситуация Елеонора заявява, че никога не е имала сериозни намерения към него и се извинява с това, че е било нормално тя да се оставяла да бъде ухажвана продължително време, тъй като това е нормално за природата и психиката на едно момиче. Така момичетата се чувствали значими.

Дотук добре. Дали обаче, питам аз, момичето се е опитала да се постави на мястото на момчето? Дали тя се е опитала да разбере каква пък е психиката и природата на едно момче? Дали тя не е използвала всеотдайността и чувствата на един младеж, за да задоволи собственото си изкривено мислене?

Какво се случва с Мартин ли, ами… Ако никога не сте попадали в положението на Мартин, то за него следва един дълъг период на депресия. Депресия, която не е вечна и има своя край, разбира се. Впоследствие Мартин е щастлив, че нищо не се е получило, защото той не би допуснал човекът до него да мисли само за себе си, без да се опитва да се постави на мястото на човека отсреща.

Смятам да приключа с примерите, защото се надявам, че ми схванахте идеята, а и те нямат край. Ако желаете вие също може да споделите пример от своето ежедневие.

Ще се радвам да изразите своето мнение над поставения въпрос и какво евентуално може да се направи, че хората да бъдем по-толерантни и разбиращи един друг.

Ще завърша с една индианска поговорка, която чух преди години: „Никога не съди другия преди да си извървял един километър път с неговите мокасини“.

]]>
http://www.gsy-design.com/%d0%b7%d0%b0%d1%89%d0%be-%d0%b5-%d1%82%d0%be%d0%bb%d0%ba%d0%be%d0%b2%d0%b0-%d1%82%d1%80%d1%83%d0%b4%d0%bd%d0%be-%d0%b4%d0%b0-%d1%81%d0%b5-%d0%bf%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%88-%d0%bd%d0%b0/feed/ 8