Поеми контрол върху потребителските роли

Днешните функции, които ще разгледаме в някои от случаите може да са ни от много голяма полза. Например когато трябва да предоставим на клиент Администраторски права за WordPress панела  и същевременно да го държим на страна от други места които не трябва да пипа. Моят съвет е – пазете администраторските права само за себе си! В по голямата част от потребителите не им трябва пълен контрол. Следващата функция може да ни е от полза, когато искаме да премахнем излишни мета боксове (meta boxes) от таблото (dashboard) и да си го персонализираме по собствен начин.

Ще започнем с премахване на цяла страница от основното меню в Админ панела. Да приемем, че даден потребител или група потребители не трябва да имат достъп до раздел Разширения(Plugins)


function remove_menu_pages() {
    $user = wp_get_current_user();
    if ($user->nickname == 'pe6o') {

         remove_menu_page( 'plugins.php' );
    }
}
add_action('admin_menu', 'remove_menu_pages', 101);

Кратко обяснение към кода: ако логнатия потребител е pe6o премахни раздел плъгинс. 

Този код ще забрани, редактирането на файлове по темата и плъгините може да го интегрирате директно в конфигурационния файл на WordPress „wp_config.php“.


define( 'DISALLOW_FILE_EDIT', true );

Следващия пример е премахване на второстепенна страница (submenu)


 remove_submenu_page('themes.php', 'nav-menus.php');

Този код ще премахне От раздела „Външен вид“ (Appearance) раздел Менюта (Menus)

Повече за премахване на страниците може да прочетете на WordPress codex като потърсите remove_menu_page.

Премахване на мета боксове от главното табло на WordPress

Сега да видим как да премахваме елементи или по правилно мета боксове от таблото. Да предположим, че новините от WordPress няма да ни трябват. За всеки случай ще постна и за останалите боксове данните.

function cw_remove_dashboard_element() {
    
     remove_meta_box('dashboard_primary', 'dashboard', 'side');
//   remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
//   remove_meta_box('dashboard_plugins', 'dashboard', 'normal');
//   remove_meta_box('dashboard_secondary', 'dashboard', 'normal');
//   remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
//   remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
//   remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
//   remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
//   remove_meta_box('dashboard_activity', 'dashboard', 'normal'); //since 3.8
}

add_action('admin_init', 'cw_remove_dashboard_element');

Лично аз тези дема ги разработвам като плъгини, но може и по други начини примерно в function.php файла. За сега това е от мен, надявам се да съм ви бил полезен. Ако засечете някакви грешки или просто искате да ме питате или пишете не се колебайте да го направите през контактната форма.

Създаване на „facebook open graph tags“ плъгин

Плъгинът който ще направим днес, ще допринася за адекватното изглеждане на споделените връзки от нашия сайт в facebook а именно това са Open Graph Tags. Чрез Open Graph протокола изрично казваме на facebook crawler как да визуализира споделената връзка за да изглежда по-добре. Плъгинът ще прави това за нас автоматично, като на всеки пост, продукт или страница ще взима нейното заглавие, вид, адрес, съдържание и изображение.

Facebook crawler 

Чрез плъгинът, който ще направим поемаме контрол върху facebook роботът, като му казваме как искаме да изглежда нашата връзка.  Без Open Graph таговете процедурата става доста по тежка, след споделяне на връзка от вашия сайт роботът сканира страницата ви и взима това което му хареса.

Подходящ размер изображения

Друго на което според мен е хубаво да се обърне внимание са изображенията за високи резолюции използвайте картинка с размери 1200 x 630 пиксела, за ниски  600 x 315 пиксела. Като минимален  е 200 x 200, под този размер дебъгера ще даде грешка и няма да ни се вижда изображението.

Писане на код

Преди да преминем към същинската част ще трябва да си направим основните неща, като да си направим директория в папка Plugins и самият плъгин, ако сте забравили как става може да си го припомните от статията Как да си направим WordPress Plugin.

Следваща стъпка е да копирате кода.

add_action('wp_head', 'cw_facebook_tags');

function cw_facebook_tags() {

    if (is_single() || is_page() || is_home()) {
        ?>
        <meta property="og:title" content="<?php the_title() ?>" />
        <meta property="og:site_name" content="<?php bloginfo('name') ?>" />
        <meta property="og:url" content="<?php the_permalink() ?>" />

        <meta property="og:description" content="<?php $post = get_post($post); $content = substr($post->post_content, 0, 300);
        echo htmlspecialchars($content, ENT_COMPAT, 'ISO-8859-1', true);
        ?>" />

        <meta property="og:type" content="<?php if (is_home() || is_page()) { echo 'website'; } else { echo 'article'; } ?>" />

        <?php if (has_post_thumbnail()) : $image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'large'); ?>
            <meta property="og:image" content="<?php echo $image[0]; ?>"/> 
        <?php endif; ?>

        <?php
    }
}

Като цяло няма нищо особено в този код, проверяваме дали е единичен пост, страница или началната страница на нашия уебсайт. Интегрираме мета таговете като за всеки взимаме данните които са необходими.

В GitHub профила съм качил малко по-разширена версия на плъгина. При интерес може да го разгледате или изтеглите от тук. Чрез него ще можете да задавате собствени og:title и og:description.

wordpress plugin for meta tags
Така изглежда плъгина

Как да си направим WordPress plugin, който изписва „Hello World“

Създаване на плъгин файл.

Първото нещо което трябва да направим е да създадем нова директория в инсталационния пакет на WordPress (wp-content\plugins),  там се намират всички инсталирани добавки към нашия сайт. На този етап директорията ще я именуваме my-first-plugin, в нея ще създадем php файл който ще именуваме my-first-plugin.php. Изискванията за да видим нашата добавката при другите в админ панела е да добавим в php файла веднага след отварящия php таг следния код:

**
* Plugin Name: My First WordPress Plugin
* Plugin URI: https://codewan.com
* Description: This is my first plugin.
* Version: 1.0.0
* Author: Ivan Balkanov
* Author URI: https://codewan.com
* License: GPL2
*/

Този php код както става ясно е коментар, който е видим в Административната част  „Разширения“на WordPress и дава информация относно плъгина и неговия автор. Минимумът за да стане активен нашия плъгин е  само Plugin Name: с този един ред ние вече виждаме нашата добавка и евентуално можем да я включваме или изключваме макар и да няма никакви функции в нея.

Добавяне на функционалност

За да се придържаме към протокола сега ще напишем и първата ни функция, която ще изписва „Hello, World!!“ в хедъра на страницата ни.


add_action('wp_head', 'hello_world');



function hello_world(){
echo 'Hello, World!';
}



Накратко имаме функцията hello_world() която при извикване изписва „Hello, World!“, това вероятно всеки го знае. Другото по различно нещо е как я извикваме. С първия ред от кода буквално казваме закачи функцията hello_world() към хедъра на нашия WordPress сайт.