Kategorie
Snippet WordPress

WordPress: usunąć logo WP i odnośniki

Nie wiem jak was, ale mnie logo WordPress w najważniejszym miejscu strony, wraz z listą odnośników po prostu… „rozbawiło”, bo inaczej nie można tego nazwać. Więc! do usunięcia.

Malutki, jednolinijkowy snippet (tutaj rozbite na wiele), usuwający z admin bara logo WordPressa oraz standardowe odnośniki:

add_action(
  'add_admin_bar_menus',
  create_function(
    '',
    "remove_action( 'admin_bar_menu', 'wp_admin_bar_wp_menu', 10 );"
  )
);

Zalecane użycie: dodać rozpakowany plik do katalogu wp-content/mu-plugins.

pobierz plik: iworks_remove_logo_menu_from_admin_bar.php

Kategorie
Snippet WordPress

WordPress: kategoria na stronie tylko dla administratorów

Na polskim forum WordPressa bartekm zadał pytanie:

mam problem ze stworzeniem kategorii newsów która jest widoczna tylko dla administratorów bloga. Czy ktoś wie jak to zrobić?

Aby na stronie z listą nie wyświetlać wpisów z kategorii o uproszczonej nazwie „nowosci”, realizujemy to w następujący sposób:

<?php
 
add_filter( 'parse_query', 'parse_query_test_filter' );
 
function parse_query_test_filter( $query )
{
    if ( !current_user_can('administrator')  ) {
        $query->query_vars['category__not_in'][] = get_category_by_slug( 'nowosci' );
    }
    return $query;
}

Trzeba pamiętać, że taki kod nie zabezpiecza przed obejrzeniem wpisu przez innych niż „administratorzy” użytkowników. On tylko nie wyświetla takich postów na listach.

Kategorie
Snippet WordPress

WordPress: obrazek dla facebooka

Jak sprawić, żeby wyróżniony przez nas obrazek znalazł się na facebooku przy wpisie? Odpowiedzią jest króciutki snippet, który najlepiej umieścić w katalogu „wp-content/mu-plugins” jako wtyczkę, która zawsze będzie uruchamiana.

<?php
if ( !function_exists( 'iworks_facebook_og_image' ) ) {
    function iworks_facebook_og_image()
    {
        if ( !is_singular()) {
            return;
        }
        if ( !function_exists( 'has_post_thumbnail' ) ) {
            return;
        }
        global $post;
        if( has_post_thumbnail( $post->ID ) ) {
            $thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' );
            printf(
                '<meta property="og:image" content="%s"/>%s',
                esc_attr( $thumbnail_src[0] ),
                "\n"
            );
        }
    }
}
add_action( 'wp_head', 'iworks_facebook_og_image', 5 );

pobierz plik: facebook.og.image.php

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu
Kategorie
Snippet WordPress

WordPress: domyślne linkowanie mediów

Dodając obrazek do wpisów w WordPress spotkaliście się z pewną upierdliwością, z którą traktuje on załączane obrazki. Za każdym razem próbuje wstawiać odnośnik do „strony z obrazkiem” zamiast do samego obrazka.

Co ciekawe silnik WordPressa próbuje pobrać domyślną wartość aż z dwóch miejsc.

  1. Z globalnych opcji z klucza o nazwie „image_default_link_type”.
  2. Z ustawień użytkownika z klucza „urlbutton”.

Jeszcze ciekawsze jest to, że nigdzie tych opcji ustawić się nie da.

Kategorie
Snippet WordPress

Zmniejszanie obrazków w WordPress

Szymon w we wpisie Prosty sposób na zmniejszenie rozmiaru plików graficznych w WordPressie podał sposób na zmniejszenie obrazków używanych przez WordPress.

Moim zdaniem podany sposób jest przerostem formy nad treścią, a dodatkowo, na co Szymon zwraca uwagę, trzeba jakieś zewnętrzne regulaminy akceptować :D

Chciałem podać bardzo prosty przykład kodu, który potrafi mocno zmniejszyć pliki graficzne typu JPEG używane w treści, które to przy zapisywaniu mogą mieć różny stopień kompresji. Oczywiście ten ostatni należy tak dobrać tak, żeby grafika nie była zbyt brzydka.

Rozwiązanie opiera na się na filtrze jpeg_quality, który określa stopień kompresji i który możemy umieścić w swoim szablonie, co oznacza, że działa tylko na te obrazki, którym zmieniamy rozmiar.

add_action( 'init', 'iworks_init' );
function iworks_init()
{
    add_filter( 'jpeg_quality', create_function( '', 'return 80;' ) );
}

Oczywistą wadą jest to że będzie to działać dla nowo ładowanych obrazków.

Kategorie
Snippet WordPress

Jak w WordPress dodać avatar zalogowanej osoby?

Chciałbym aby na mojej stronie, po zalogowaniu, znalazł się avatar zalogowanej osoby.

if( is_user_logged_in() ) {
    global $current_user;
    get_currentuserinfo();
    echo get_avatar( $current_user->ID );
}
Kategorie
Snippet WordPress

Wyświetlanie jednej kategorii wpisów na stronie głównej

Załóżmy, że na stronie głównej chcemy wyświetlać tylko wpisy z kategorii o identyfikatorze 10. To co musimy zrobić, to powiedzieć WordPress’owi że chcemy tylko posty z określonej kategorii i jej podkategorii. Realizacja tego zadania polega na zmianie zawartości klucza cat w zapytaniu. Podmianę wykonujemy w taki oto sposób:

Poniższy kod należy dodać do pliku functions.php używanego motywu.

add_action('wp_head', 'iworks_only_one_category');
function iworks_only_one_category()
{
    if ( is_home() || is_front_page() ) {
        global $wp_query;
        $wp_query->query('cat=10');
    }
}

Jeżeli chcemy inną kategorię, to należy zmienić 10 na inny, wybrany identyfikator. Można tam też umieścić ich kilka z przecinkami.

Wyklucz kategorię

Wykluczanie wybranej kategorii ze strony głównej realizujemy przez dopisanie znaku minus, wtedy te z minusem będą pomijane przy wyświetlaniu.

add_action('wp_head', 'iworks_exclude_one_category');
function iworks_exclude_one_category()
{
    if ( is_home() || is_front_page() ) {
        global $wp_query;
        $wp_query->query('cat=-10');
    }
}

pobierz plik: iworks_only_one_category.php

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu
Kategorie
Snippet WordPress

Lista wszystkich wpisów w danej kategorii

Jeżeli dla kategorii foo chcemy wyświetlić listę wszystkich wpisów, należy utworzyć plik category-foo.php zgodnie z http://codex.wordpress.org/Template_Hierarchy#Category_display

który będzie zawierał:

<?php
function get_all_post_from_category()
{
    global $wp_query, $cat;
    $wp_query->query('showposts=-1&cat='.$cat);
}
add_action('wp_head', 'get_all_post_from_category');
get_header();
if ( have_posts() ) {
    echo '<ul>';
    while ( have_posts() ) {
        the_post();
        echo '<li><a href="'.get_permalink().'">';
        the_title();
        echo '</a></li>';
    }
    echo '</ul>';
}
get_footer();
?>

Oczywiście należy dostosować go naszego motywu.

pobierz plik: category-foo.php

Kategorie
Snippet WordPress

WordPress: jak wyrejstrować domyślne widgety?

W kilku wdrożeniach nie używam prawie żadnego ze standardowych widgetów w jakie wyposażony jest WordPress, zastępując ich funkcjonalność, bądź zwyczajnie ich nie wykorzystując.

Na pewnej dużej witrynie wykorzystującej naprawdę sporo różnego rodzaju dodatków na ekranie „Widgety” panował straszliwy wręcz chaos. Mnóstwo używanych i nie używanych, instancje już nie używane, podobne nazwy.

W całym tym gąszczu co i raz łapałem standardowe widgety, których o zgrozo, wcale nie chciałem użyć.

Okazało się, że bez kłopotu można je wyłączyć, co umożliwia poniższy kod.