Rychlá nebo hromadná editace uživatelských polí

Saving custom fields in quick or bulk edit mode in WordPress
http://wpdreamer.com/…-quick-edit/

One of the most cool features when managing WordPress posts, is the ability to batch edit multiple posts at once or quickly edit one post to perform a simple task such as adding a tag. Learn how to extend WordPress’ Quick Edit and Bulk Edit to retrieve and save the value of your custom fields.

Plugin Custom Bulk/Quick Edit
http://wordpress.org/…kquick-edit/
https://github.com/…lkquick-edit
How do I add custom fields to my bulk/quick edit page »
How do you configure options »

Pozor, do functions.php může být nutné přidat:

add_filter( 'manage_post_posts_columns', 'my_manage_post_posts_columns' );
function my_manage_post_posts_columns( $columns ) {
        $columns['custom_field_name'] = esc_html__( 'Nazev sloupce v administraci' ); // pozor, název sloupce musí být bez diakritiky
        return $columns;
}

a teprve po přidání tohoto kódu je třeba zpřístupnit pole v nastavení pluginu.

Nástroj pro přesun WordPressu jinam

When you’re migrating WordPress (or any other platform using serialized PHP strings in the database) between domains, you must use a safe search and replace method that preserves the integrity of the serialized string lengths. A simple of a dump file for http://localhost to, for example, http://thenewdomain.com is problematic because the length of the string changes but the indexes for the serialized strings does not. Consequently settings are lost and widgets disappear. Not good.

This script can now also handle multiply nested serializations, which can happen in transient values in WP at times, and it can also handle multi-byte Unicode changes safely. This is important now that internationalised domain names are allowed.

It’s worth mentioning that the code will work for any platform that stores PHP serialized arrays in a MySQL database. You can easily use this script on Drupal, Joomla and many other systems where you need to change items across a database without messing up your stored arrays.

Search & Replace DB »

Související

How to Move WordPress to a New Server (without losing anything)
http://www.sitepoint.com/…ng-anything/

Vyloučení rubriky ze zobrazení přes the_category()

Může se hodit, když nechceme zobrazovat např. nadřazenou rubriku, ale jen podrubriky. Umístíme do functions.php.

function the_category_filter($thelist,$separator=' ') {
     // seznam ID rubrik, které se nemají zobrazit
     $exclude = array(4, 5);
     // create an empty array
     $exclude2 = array();

     // loop through the excluded IDs and get their actual names
     foreach($exclude as $c) {
          // store the names in the second array
          $exclude2[] = get_cat_name($c);
     }

     // get the list of categories for the current post
     $cats = explode($separator,$thelist);
     // create another empty array
     $newlist = array();

     foreach($cats as $cat) {
          // remove the tags from each category
          $catname = trim(strip_tags($cat));

          // check against the excluded categories
          if(!in_array($catname,$exclude2))

          // if not in that list, add to the new array
          $newlist[] = $cat;
     }
     // return the new, shortened list
     return implode($separator,$newlist);
}

add_filter('the_category','the_category_filter', 10, 2);

Dohledávání v anglických slovnících a thesaurech

Např. pro TheFreeDictionary do functions.php přidáme shortcode:

function tfd_lookup($atts)
{
    $keyword = $atts['0'];
    $output = '<a href="http://www.thefreedictionary.com/' . $keyword . '" target="_blank">' . $keyword . '</a>';
    return $output;
}

add_shortcode('tfdl', 'tfd_lookup');

a v textu příspěvku pak výraz, které chceme dohledat, označíme příslušným shortcodem:

[tfdl hledaný_výraz]

Další příklady »

Můžeme použít i pluginy:

Click2Refer Virtual Dictionary
http://wordpress.org/…-dictionary/

Click2Refer plugin lets the blog readers to lookup the Wordnet dictionary just by a double click on the word they want to refer. This will take in a floating window into your blog upon the first double click.

Double Click Dictionary Look-up
http://wordpress.org/…ary-look-up/

Double click on the screen to highlight a word. This creates a qTip next to the word where when clicked, a pop-up will appear with the Miriam-Webster.com's definition on the word.

Top 10 WordPress Dictionary Plugins »

Užitečné hooks & filters

Modify post title when some string exists in the post content
Add lock icon if there is a member shortcode present in the post content.
Without $post->ID == $id not only post title is changed but also menu items and next/previous links.

function modify_title($title, $id) {
    global $post;
    $content = $post->post_content;
    if(strpos($content, '[member]') AND $post->ID == $id) {
        $theme_dir = get_bloginfo('stylesheet_directory');
        $lock = ' <img src="'.$theme_dir.'/images/lock.gif" border="0"/>';
        $new_title = $title.$lock;
        return $new_title;
    } else {
        return $title;
    }
}
add_filter('the_title', 'modify_title', 10, 2);

Add extra contact methods to user profiles

By default, WordPress allow users to enter an AIM name on their profile, but no Facebook and no Twitter names! In order to add more contact methods to user profile, simply paste this hook in your functions.php file. In this example it will add Facebook and Twitter, but it can be used for any website or service you need.

function my_user_contactmethods($user_contactmethods){
  $user_contactmethods['twitter'] = 'Twitter Username';
  $user_contactmethods['facebook'] = 'Facebook Username';

  return $user_contactmethods;
}

add_filter('user_contactmethods', 'my_user_contactmethods');

Automatically enable threaded comments

By default, WordPress do not enable threaded comments. If you want/need to change this, here is a handy code snippet to paste in your functions.php file:

function enable_threaded_comments(){
 if (!is_admin()) {
  if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1))
   wp_enqueue_script('comment-reply');
  }
}

add_action('get_header', 'enable_threaded_comments');

Automatically replace words in your posts

function replace_text_wps($text){
    $replace = array(
        // 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS'
        'wordpress' => '<a href="#">wordpress</a>',
        'excerpt' => '<a href="#">excerpt</a>',
        'function' => '<a href="#">function</a>'
    );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
}

add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');

Quick maintenance mode

function cwc_maintenance_mode() {
    if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
        wp_die('Maintenance, please come back soon.');
    }
}
add_action('get_header', 'cwc_maintenance_mode');

Zdroj »

Přidání boxu pro excerpt (stručný výpis) i do stránek

function enable_page_excerpt() {
add_post_type_support( 'page', 'excerpt' );
}
add_action('init', 'enable_page_excerpt');

Deaktivace HTML v komentářích

add_filter('pre_comment_content', 'wp_specialchars');

10 Useful WordPress Hook Hacks »

Nastavení jiného jazyka pro web (frontend) a jiného pro administraci

User Language Switch
https://wordpress.org/…uage-switch/

Allows backend users to set the language displayed in the back-end and front-end of your site. It also allows to translate pages and posts. Define one language for admin and the other for theme. Don’t define WPLANG in your wp-config.php file.

A nebo:

// setup one language for admin and the other for theme
// must be called before load_theme_textdomain()
function set_my_locale($locale) {

        $locale = ( is_admin() ) ? "cz_CS" : "en_US";
        setlocale(LC_ALL, $local );
        return $locale;

}
add_filter( 'locale', 'set_my_locale' );

Jak vytvořit a přidat vlastní shortcodes

Zakódování e-mailové adresy

function cwc_mail_shortcode( $atts , $content=null ) {
    for ($i = 0; $i < strlen($content); $i++) $encodedmail .= "&#" . ord($content[$i]) . ';';
    return '<a href="mailto:'.$encodedmail.'">'.$encodedmail.'</a>';
}
add_shortcode('mailto', 'cwc_mail_shortcode');

Použití shortcode:

[mailto]email@y­ourdomain.com[/ma­ilto]

Obsah pouze pro přihlášené uživatele

function cwc_member_check_shortcode( $atts, $content = null ) {
         if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
                return $content;
        return '';
}

add_shortcode( 'member', 'cwc_member_check_shortcode' );

Použití shortcode:

[member]This text will be only displayed to registered users.[/member]

Zobrazení PDF v iframe

function cwc_viewpdf($attr, $url) {
    return '<iframe src="https://docs.google.com/viewer?url=' . $url . '&embedded=true" style="width:' .$attr['width']. '; height:' .$attr['height']. ';" frameborder="0">Your browser should support iFrame to view this PDF document</iframe>';
}
add_shortcode('embedpdf', 'cwc_viewpdf');

Použití shortcode

[embedpdf width="600px" height="500px"]http://infolab.stanford.edu/pub/papers/google.pdf[/embedpdf]

Volání shortcode v šabloně (mimo editor)

echo do_shortcode('[jmeno_shortcode]');

viz dokumentace.

Znepřístupnění shortcodes

There might be some cases that you need the shortcodes of the text to be omitted. When that time comes, strip_shortcodes() is your friend.

Let's say that you need to strip shortcodes in the homepage but let them run in other content pages:

<?php
function remove_shortcode_from_index( $content ) {
    if ( is_home() )
        $content = strip_shortcodes( $content );
    return $content;
}
add_filter( 'the_content', 'remove_shortcode_from_index' );
?>

Jak vytvořit vlastní shortcode (musilda.cz) »
10 super useful WordPress shortcodes »
Mastering Wordpress shortcodes »
8 fun & useful shortcode functions for WordPress »

Používání uživatelských polí v šablonách

Using Custom Fields In Your WordPress Template »

// key = název (klíč) uživatelského pole
// $post->ID lze použít pouze v loopu
if($data = get_post_meta($post->ID, 'key', true)) {
    echo $data;
}

// v případě pole
if($data = get_post_meta($post->ID, 'key')) {
    echo $data[0];
    echo $data[1];
}

Detailed example for the usage of the add_post_meta, delete_post_meta, update_post_meta, and get_post_meta functions.

Úprava RSS kanálu pomocí hooku

Action hooks and filter hooks »

Vysvětlení a příklady »

All plugin hooks in WordPress 3.5 »

###################################################################################
# tento hook prida do RSS thumbnail, odstrani iframe a urizne obsah za tagem "more"
###################################################################################

function improveRSS($content) {
global $post;
if ( has_post_thumbnail( $post->ID ) ){
$content = '' . get_the_post_thumbnail( $post->ID, 'rss-thumbnail', array( 'style' => 'margin:0; border: 10px solid #202020' ) ) . '' . $content;
}

$content = preg_replace( '/<iframe(.*)\/iframe>/is', '', $content );

$teaser = preg_split( '/<span id\="(more\-\d+)"><\/span>/', $content );
$readmore = '<a href="'.get_permalink().'">Více na webu »</a>';
$content = $teaser[0].$readmore;
return $content;
}

add_filter('the_excerpt_rss', 'improveRSS');
add_filter('the_content_feed', 'improveRSS');

Generátor .po souborů, konvertor .mo souborů

This generator will scan PHP file(s) and create .po files, that are used for localization. It will extract all strings wrapped in __("txt", "domain") and _e("txt", "domain") calls.

Strings can be enclosed in either double quotes (") or single quotes(') and with any character encoding.

You can upload a single PHP file or a ZIP file containing multiple files. The scanner will extract strings from all PHP files inside the archive, ignoring other files (like images and stylesheets).

Nástroj pro Konverzi z .mo do .po »