Drobečková navigace bez použití pluginu

Do functions.php vložíme:

function the_breadcrumb() {
                echo '<ul id="crumbs">';
        if (!is_home()) {
                echo '<li><a href="';
                echo get_option('home');
                echo '">';
                echo 'Home';
                echo "</a></li>";
                if (is_category() || is_single()) {
                        echo '<li>';
                        the_category(' </li><li> ');
                        if (is_single()) {
                                echo "</li><li>";
                                the_title();
                                echo '</li>';
                        }
                } elseif (is_page()) {
                        echo '<li>';
                        echo the_title();
                        echo '</li>';
                }
        }
        elseif (is_tag()) {single_tag_title();}
        elseif (is_day()) {echo"<li>Archive for "; the_time('F jS, Y'); echo'</li>';}
        elseif (is_month()) {echo"<li>Archive for "; the_time('F, Y'); echo'</li>';}
        elseif (is_year()) {echo"<li>Archive for "; the_time('Y'); echo'</li>';}
        elseif (is_author()) {echo"<li>Author Archive"; echo'</li>';}
        elseif (isset($_GET['paged']) && !empty($_GET['paged']))
        {echo "<li>Blog Archives"; echo'</li>';}
        elseif (is_search()) {echo"<li>Search Results"; echo'</li>';}
        echo '</ul>';
}

V šabloně funkci zavoláme:

the_breadcrumb();

Zdroj »

Přidání custom posts do výsledků vyhledávání

Do functions.php přidáme

add_filter( 'pre_get_posts', 'tgm_cpt_search' );
/**
* This function modifies the main WordPress query to include an array of post types instead of the default 'post' post type.
*
* @param mixed $query The original query
* @return $query The amended query
*/
function tgm_cpt_search( $query ) {
if ( $query->is_search )
$query->set( 'post_type', array( 'post', 'movies', 'products', 'portfolio' ) );
return $query;
};

Automatický náhledový obrázek

Auto Post Thumbnail
http://wordpress.org/…t-thumbnail/

Automatically generate the Post Thumbnail (Featured Thumbnail) from the first image in post or any custom post type only if Post Thumbnail is not set.

If the post thumbnail is already present, the plugin will do nothing. If you don't want a post thumbnail for some post with images, just add a custom field skip_post_thumb to the post and the plugin will restrain itself from generating post thumbnail. The plugin also provides a Batch Processing capability to generate post thumbnails for already published posts.

Další pluginy
http://beginnersbook.com/…tomatically/
http://wpfreesetup.com/…ess-plugins/

nebo pomocí funkcí:

<?php
function autoset_featured() {
global $post;
$already_has_thumb = has_post_thumbnail($post->ID);
    if (!$already_has_thumb)  {
        $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
        if ($attached_image) {
            foreach ($attached_image as $attachment_id => $attachment) {
                set_post_thumbnail($post->ID, $attachment_id);
            }
        }
    }
}
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');
?>

alternativně

function set_first_as_featured($attachment_ID){
    $post_ID = get_post($attachment_ID)->post_parent;
    if(!has_post_thumbnail($post_ID)){
        set_post_thumbnail($post_ID, $attachment_ID);
    }
}
add_action('add_attachment', 'set_first_as_featured');
add_action('edit_attachment', 'set_first_as_featured');

On every upload / edit attachment, function checks if the post already has featured image. If it has not, image in question is set as featured. Every next picture will be ignored (since post already has featured image).

případně

wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail' )[0];

Get The First Image From a Post »

Vytváření vlastních sidebarů a oblastí pro widgety

Custom Sidebars
http://wordpress.org/…om-sidebars/

Allows you to create all the widgetized areas you need, your own custom sidebars, configure them adding widgets, and replace the default sidebars on the posts or pages you want in just few clicks.

Alternativy

Per Page Sidebars
http://wordpress.org/…ge-sidebars/

Allows the creation and display of custom sidebars for any page (or post) on your site. On each page, you can choose which of your current theme's sidebars will be replaced. The replacement works for all descendants of a replaced page.

Svépomocí

V šabloně single.php a/nebo page.php najdeme kód:

get_sidebar();

a nahradíme jej tímto:

$sidebar = get_post_meta($post->ID, "sidebar", true);
get_sidebar($sidebar);

V příspěvku nebo stránce, kde chceme zobrazit specifický sidebar pak přidáme uživatelské pole Sidebar a vložíme do něj jméno specifického sidebaru, např xyz. Soubor sidebar-xyz.php musí samozřejmě existovat. Vytvoříme ho zkopírováním originálního souboru sidebar.php (a případně podle potřeby upravíme).

Soubor sidebar-xyz upravíme následovně:

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar("xyz-sidebar") ) : ?><?php endif; ?>

Pro vytvoření vlastní oblasti pro widgety do functions.php přidáme kód:

if ( function_exists('register_sidebar') ) {
        register_sidebar(array(
        'name' => 'xyz',
        'id' => 'xyz-sidebar',
        'description' => 'Uživatelský sidebar pro stránku xyz"',
        'before_widget' => '<div style="height: 280px"></div><li id="%1$s" class="widget %2$s">',
        'after_widget' => '</li>',
        'before_title' => '<h2 class="widgettitle">',
        'after_title' => '</h2>',
        // udaje v after a before třeba upravit v souladu s použitým tématem
        ));
}\---

Vkládání map Seznamu (mapy.cz)

Pro vkládání seznamáckých map do Wordpressu lze využít bohatě zdokumentované API.

  1. v header.php si natáhneme loader
<?php  if (is_page('123') ) { // (ev. is_single('456')) v případě, ze chceme mapu jen na konkrétní stránce či postu, podmínkou určíme id stránky/postu ?>
<script type="text/javascript" src="https://api4.mapy.cz/loader.js"></script><script type="text/javascript">// <![CDATA[
Loader.load()
// ]]></script>
<?php } ?>
  1. do kódu stránky (v html editoru) vložíme do stránky kód pro zobrazení mapy
<div id="m" style="width: 400px; height: 250px;"></div>
<!-- zde šířka, výška, případně rámeček a float -->
<script type="text/javascript">// <![CDATA[
var center = SMap.Coords.fromWGS84(17.893545, 49.932743); // koordináty x a y z url místa na mapy.cz
var m = new SMap(JAK.gel("m"), center, 15); // číslo udává stupeň zoomu
m.addDefaultLayer(SMap.DEF_BASE).enable(); // základní mapa
m.addDefaultControls(); // vloží ovladač pro posun a zoom
var layer = new SMap.Layer.Marker(); // vložení značky
m.addLayer(layer);
layer.enable();
var options = {};
var marker = new SMap.Marker(center, "myMarker", options);
layer.addMarker(marker);
// ]]></script>
  1. no a mapa pak vypadá třeba takhle.

Vychytal to Bigdrobek.

Nastavení automatické aktualizace

WordPress 3.7 introduced automatic upgrades. Maintenance and security updates are applied in the background when a patch becomes available and someone visits your site. By default, the process only applies when updating minor versions — such as 3.7.0 to 3.7.1 — and takes no longer than 25 seconds.

Automated updates are especially risky if you:

  • use a large number of dubious plug-ins or complex third-party themes
  • want to control and manage updates yourself, or
  • have an especially nervous disposition!

How to enable major release updates

define('WP_AUTO_UPDATE_CORE', true);

To stop the autoupdates of the WordPress core

define( 'WP_AUTO_UPDATE_CORE', false );

How to enable plugins updates

add_filter( 'auto_update_plugin', '__return_true' );

How to enable themes updates

add_filter( 'auto_update_theme', '__return_true' );

Then enable the plugins updates

add_filter( 'auto_update_plugin', '__return_true' );

How to completely disable the WordPress auto updates

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WordPress Auto Updates How To »

How to Configure Automatic Updates in WordPress »

How to exclude plugins from getting automatically updated »

Jak skrýt vybrané stránky či příspěvky v administraci uživatelům

function jp_exclude_pages_from_admin($query) {

    if ( ! is_admin() )
        return $query;

    global $pagenow, $post_type;

    if ( !current_user_can( 'administrator' ) && is_admin() && $pagenow == 'edit.php' && $post_type == 'page' ) {
        $query->query_vars['post__not_in'] = array( '10', '167', '205' ); // ID stránek, které se mají skrýt "neadminům"
    }
}

add_filter( 'parse_query', 'jp_exclude_pages_from_admin' );

Zdroj »

Nastavení defaultní hodnoty pro tagy a uživatelské taxonomie

Příspěvek se automaticky zařadí do výchozí rubriky, i když ji nepřiřadíme. To ale neplatí pro štítky (tagy) a uživatelské taxonomie.
Jak to nastavit v tomto případě:

function mfields_set_default_object_terms( $post_id, $post ) {
    if ( 'publish' === $post->post_status ) {
        $defaults = array(
            'post_tag' => array( 'štítek 1', 'štítek 2' ),
            'moje taxonomue' => array( 'Defaultní hodnota' ),
            );
        $taxonomies = get_object_taxonomies( $post->post_type );
        foreach ( (array) $taxonomies as $taxonomy ) {
            $terms = wp_get_post_terms( $post_id, $taxonomy );
            if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
                wp_set_object_terms( $post_id, $defaults[$taxonomy], $taxonomy );
            }
        }
    }
}
add_action( 'save_post', 'mfields_set_default_object_terms', 100, 2 );

http://wordpress.mfields.org/…rdpress-3-0/