Kategoria: WordPress Strona 16 z 25

WordPress od lat znajduję się w samym centrum moich zawodowych zainteresowań.

WordPress: jak skasować wpisy krótsze niż…

Dzisiejszy snippet powstał „na zamówienie” jednego z użytkowników kanału #wordpress na IRCu, i służy do kasowania wpisów krótszych niż 800 znaków. Cel właściwie jeden, nadchodząca panda może spamiarakom z krótką treścią zrobić kuku. A temat był fajny, użytkownik za mało łapał sql’a żeby zrobił to z wykorzystaniem kilku poleceń, więc powstała wtyczunia:

add_action( 'admin_init', 'iworks_dtl' );
function iworks_dtl()
{
    global $wpdb;
    $query = 'SELECT ID FROM '.$wpdb->posts.' WHERE LENGTH(post_content) < 800 AND post_type = "post" AND post_status = "publish"';
    $data = $wpdb->get_results( $query );
    foreach( $data as $one ) {
        wp_delete_post( $one->ID, true );
    }
}
[zip href="http://iworks.pl/wp-content/uploads/2012/01/iworks_delete_post_short_that_800.php.zip"]iworks_delete_post_short_that_800.php[/zip]

Gala Mistrzów Warsztatu

W krótkim czasie wykonałem na podstawie dostarczonej grafiki w pełni funkcjonalny motyw WordPressa. Moim zadaniem była również konfiguracja i uruchomienie serwisu, a w początkowej fazie również jego utrzymanie.

W serwisie użyto również:

  • generowania sitemap.xml
  • all in seo pack – w celu poprawy właściwości dokumentów
  • statystyk googla
  • lightbox gallery – żeby zdjęcia otwierały się w lightboxie
  • inne…
adres
gmw.intercars.com.pl
w sieci
styczeń 2012
oprogramowanie
WordPress
cel
wytworzenie motywu
zakres prac
wytworzenia szablonu do WordPress, wprowadzanie treści
technologie
php, html5, gettext

WordPress: Jak skasować starsze niż miesiąc wersje wpisów?

Zastanawialiście się może kiedyś jak przyrasta baza danych waszego serwisu opartego o WordPress? Jeżeli nie publikujecie kilku wpisów dziennie, to może nie jest to jakaś niesamowita wielkość ale coś tam się dzieje. Każde zapisanie przygotowywanego wpisu tworzy w bazie danych jego wersję i o ile macie ustawioną stałą WP_POST_REVISIONS na wartość większą od zera, to system nie stworzy więcej niż zdefiniowana wartość i tu mógłbym skończyć moje rozważania. Ale…

[blo-link-inner href="http://iworks.pl/2011/01/06/wordpress-usun-zbedne-wersje/"]WordPress: usuń zbędne kopie wpisów[/blo-link-inner]

No właśnie jest jedno ale, najstarszy wpis tutaj pochodzi z 2003 roku i nawet jezeli mój  serwis trzyma tylko 3 ostatnie wersje wpisów, to posiadając kilkaset wpisów oznacza to kilkaset do kilkutysięcy rekordów w bazie w dwóch tabelach. W tabelach posts oraz postmeta (nie zapomnijcie o prefiksie).

Poniższy kod, umieszczony w katalogu wp-content/mu-plugins pozwala na czyszczenie bazy ze starszych niż miesiąc wersji wpisów.

add_action( 'admin_init', 'iworks_delete_older_revisions' );
function iworks_delete_older_revisions()
{
    global $wpdb;
    $query = 'delete from '.$wpdb->posts.' where post_type = \'revision\' and post_date < now() - interval 1 month';
    $wpdb->query( $query );
    $query = 'delete a from '.$wpdb->postmeta.' a left join '.$wpdb->posts.' b on b.ID = a.post_id where b.ID is null';
    $wpdb->query( $query );
}

Uznałem, że miesiąc to dobry czas, po którym można usunąć zalegające wpisy. Oczywiście każdy kto zechce może ten okres zwiększyć. Wystarczy zmienić „interval 1 month” na „interval 3 month”, żeby usuwać wersje starsze niż 3 miesiące.

[zip href="http://iworks.pl/wp-content/uploads/2012/iworks_delete_revision_older_than_month.php.zip"]iworks_delete_revision_older_than_month.php[/zip]

WordPress: losowa kolejność postów

Jak losowo wyświetlać posty? Nic prostszego, wystarczy jedna linijka kodu (tu rozbite, żeby dobrze się wyświetlało:

add_filter(
    'posts_orderby',
    create_function( '$a', 'return "rand()";' )
);

Jak wykorzystać ten kod?

Należy go wstawić w function.php uzywanego motywu, oczywiście nie w takiej formie, bo nie wyświetlimi pojedynczego wpisu nawet, bo będzie losowy, ale z odpowiednimi warunkami.

Przykład losujący tylko na stronie kategorii:

add_filter( 'posts_orderby', 'iworks_random_order' );
function iworks_random_order( $order ) {
    if ( is_category() ) {
        return "rand()";
    }
    return $order;
}

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

Zmiana w repozytorium wtyczek WordPressa

Jeżeli odwiedzacie repozytorium wtyczek WordPressa to być może trafiliście na wtyczki, które posiadają graficzny nagłówek. Całość zmian opisał Matt, a sposób na umieszczenie graficznego banerka jest niesamowicie prosty i składa się z trzech kroków:

  1. Utwórz obrazek w rozmiarze 772×250 pikseli, musi być to jpeg lub png.
  2. W katalog głównym wtyczki utwórz katalog assets a w nim swój plik nazwany tak: assets/banner-772x250.(jpg|png). Uwaga! katalog assets trzeba dodać w głównym katalogu wtyczki, a nie w katalogu trunk.
  3. Po odświeżeniu się danych wtyczki (czas odświeżania to około 15 minut), baner pojawi się nad opisem.

Wtyczka z banerkiem: upPrev

Oryginalny wpis: Been giving a lot of thought to how.

 

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

Wtyczka upPrev w sieci Blomedia

Wtyczka upPrev została wdrożona we wszystkich serwisach sieci blomedia.pl co oznacza, że potencjalnie jest używana do kilkunastu milionów razy miesięcznie.

Wtyczka została specjalnie zmieniona. W celu zwiększenia wydajności została dostosowana do używane s serwisach własnego systemu cachowania opartego od serwer memcache’a.

[blo-link-inner href="http://iworks.pl/2011/08/23/wtyczka-wordpress-upprev/"]Wtyczka WordPress: upPrev[/blo-link-inner]

Strona 16 z 25

Oparte na WordPress & Theme by Anders Norén