Kategoria: Snippet Strona 3 z 4

WordPress: jak zmienić tło w co drugim wpisie

Na polskim forum WordPressa użytkownik kujdak zadał pytanie

Mam skórkę Twenty Eleven ten. chciałem wyróżnić posty – co drugi o np. szarym tle. porsze o pomoc jak to zrobic?

Odpowiedź dotyczy dowolne skórki i jest przewrotna. Wystarczy dodać odpowiednią klasę i ją wyróżnić.

A więc jak dodać klasę?

add_filter( 'post_class', 'iworks_even_odd_post_class_filter' );
 
$post_count = 1;
 
function iworks_even_odd_post_class_filter( $class )
{
    global $post_count;
    $class[] = $post_count++ % 2? 'odd':'even';
    return $class;
}

Oraz dodać odpowiedni wygląd w pliku style.css:

.hentry.odd
{
    background-color:red;
}

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.

[zip title="Usuń z AdminBara logo WordPressa wraz z całym jego menu" href="http://iworks.pl/wp-content/uploads/2011/12/iworks_remove_logo_menu_from_admin_bar.php.zip"]iworks_remove_logo_menu_from_admin_bar.php[/zip]

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.

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 );
[zip href="http://iworks.pl/wp-content/uploads/2011/11/facebook.og.image.php.zip"]facebook.og.image.php[/zip]

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

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.

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.

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 );
}

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');
    }
}
[zip href="http://iworks.pl/wp-content/uploads/2011/09/iworks_only_one_category.php.zip"]iworks_only_one_category.php[/zip]

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

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.

[zip href="http://iworks.pl/wp-content/uploads/2011/09/category-foo.php.zip"]category-foo.php[/zip]

Strona 3 z 4

Oparte na WordPress & Theme by Anders Norén