Předávání parametrů v url

WordPress parametry v url automaticky "odstřihne". Je třeba přidat do functions.php:

function parameter_queryvars( $qvars ) {
    $qvars[] = 'yourvarname';
    return $qvars;
}
add_filter('query_vars', 'parameter_queryvars' );

a následně v šabloně použít:

global $wp_query;
if (isset($wp_query->query_vars['yourvarname'])) {
    print $wp_query->query_vars['yourvarname']; // něco udělej
}

Zdroj »

Skloňování počtu komentářů

Buď pluginem České komentáře
https://wordpress.org/…e-komentare/

V jednoduché administraci můžete nastavit své vlastní řetězce pro určitý počet komentářů.

A nebo přidáním vlastní funkce do functions.php:

function pocetKomentaru(){
    $pocetKomentaru = get_comments_number();
    if(comments_open()){
        if($pocetKomentaru == 0) $komentText = "Žádné komentáře";
        elseif($pocetKomentaru == 1) $komentText = "1 komentář";
        elseif($pocetKomentaru < 5) $komentText = $pocetKomentaru . " komentáře";
        else $komentText = $pocetKomentaru . " komentářů";
        return "<a href='" . get_comments_link() ."'>". $komentText."</a>";
        }
    else return "Komentáře byly vypnuty";
    }

Zdroj »

Jak omezit listování v příspěvcích pouze na rubriku, ve které je příspěvek

Jednoduchý způsob přímo v šabloně:

previous_post_link( '%link', 'Prev post in category', true );
next_post_link( '%link', 'Next post in category', true );

V případě, že nechceme zasahovat do šablony (potřebujeme např. upravit listování v rubrice v single.php v Twentyfifteen), stačí vložit do functions.php tento kód:

add_filter( 'get_next_post_join', 'navigate_in_same_taxonomy_join', 20);
add_filter( 'get_previous_post_join', 'navigate_in_same_taxonomy_join', 20 );
function navigate_in_same_taxonomy_join() {
        global $wpdb;
        return " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
}

add_filter( 'get_next_post_where' , 'navigate_in_same_taxonomy_where' );
add_filter( 'get_previous_post_where' , 'navigate_in_same_taxonomy_where' );
function navigate_in_same_taxonomy_where( $original ) {
        global $wpdb, $post;
        $where          = '';
        $taxonomy       = 'category';
        $op             = ('get_previous_post_where' == current_filter()) ? '<' : '>';
        $where          = $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy );
        if ( ! is_object_in_taxonomy( $post->post_type, $taxonomy ) )
                return $original ;

        $term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );

        $term_array = array_map( 'intval', $term_array );

        if ( ! $term_array || is_wp_error( $term_array ) )
                return $original ;

        $where          = " AND tt.term_id IN (" . implode( ',', $term_array ) . ")";
        return $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $post->post_date, $post->post_type );
}

Zdroj »

Zobrazování metaboxů pouze na vybraných stránkách

add_action('admin_init','my_meta_init');
function my_meta_init()
{
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
// checks for post/page ID
if ($post_id == '84')
{
add_meta_box('my_all_meta_1', 'My Custom Meta Box 1', 'my_meta_setup_1', 'page', 'normal', 'high');
}
$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
// check for a template type
if ($template_file == 'home.php')
{
add_meta_box('my_meta_2', 'My Custom Meta Box 2', 'my_meta_setup_2', 'page', 'normal', 'high');
}
// add a meta box for custom page types
foreach (array('events','page') as $type)
{
add_meta_box('my_meta_3', 'My Custom Meta Box 3', 'my_meta_setup_3', $type, 'normal', 'high');
}
add_action('save_post','my_meta_save');
}

Zdroj »

Přidání bloku s nápovědou

Rozšíření bloku Help v záhlaví administrace příspěvku.

// Add help text to a specific page

function adding_help_tab() {

$screen = get_current_screen();

if ( 'post' == $screen->post_type ) {

get_current_screen()->add_help_tab( array(
'id' => 'post',
'title' => ( 'Writing Guidelines' ),
'content' => '<strong>Hello, please keep these writing guidelines in mind.</strong>
<ul>
    <li>The content you add must be unique.</li>
    <li>Add relevant and exciting images with your content.</li>
    <li>Remember to add title, alt text, and a descriptive caption for your images.</li>
</ul>
',
) );
}
}
add_action( 'admin_head', 'adding_help_tab' );

Úprava hlavičky e-mailu odesílaného WordPressem

Změna z “WordPress” <wordpress@yoursite.com> na “Můj web/Moje jméno” <mujmejl@mujweb.cz>

function website_email() {
    $sender_email= 'Your email here';
    return $sender_email;
}
function website_name(){
    $site_name = 'Your site name here';
    return $site_name;
}
add_filter('wp_mail_from','website_email');
add_filter('wp_mail_from_name','website_name');

http://webania.net/…n-wordpress/

Přidání rel=“next” & rel=“prev” do hlavičky pro stránkované archivy

Adding rel=“next” & rel=“prev” for paginated archives, put this code into functions.php

function rel_next_prev(){
    global $paged;

    if ( get_previous_posts_link() ) { ?>
        <link rel="prev" href="<?php echo get_pagenum_link( $paged - 1 ); ?>" /><?php
    }

    if ( get_next_posts_link() ) { ?>
        <link rel="next" href="<?php echo get_pagenum_link( $paged +1 ); ?>" /><?php
    }

}
add_action( 'wp_head', 'rel_next_prev' );

Can be done also by Yoast's WordPress SEO plugin or by Pagination Rel Links plugin.