Как настроить WordPress внутренние функции, такие как - PullRequest
0 голосов
/ 22 августа 2010

Мне нужно настроить previous_post_link() и next_post_link() в WordPress.

Например, я хочу сократить постоянные ссылки, такие как «Лучшие 5 языков программирования, которые вам необходимо выучить», до «Лучшие 5 программ»... ".

Функция, отвечающая за создание ссылки isadjacent_post_link(), расположенной по адресу wp-includes/link-template.php

Ответы [ 2 ]

2 голосов
/ 25 августа 2010

Чтобы создать собственную смежную ссылку для постов, я могу использовать ловушку фильтра next_post_link и previos_post_link;

В functions.php:

function shrink_previous_post_link($format, $link){
    $in_same_cat = false;
    $excluded_categories = '';
    $previous = true;
    $link='%title';
    $format='« %link';


    if ( $previous && is_attachment() )
        $post = & get_post($GLOBALS['post']->post_parent);
    else
        $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous);

    if ( !$post )
        return;

    $title = $post->post_title;

    if ( empty($post->post_title) )
        $title = $previous ? __('Previous Post') : __('Next Post');

    $rel = $previous ? 'prev' : 'next';

    //Save the original title
    $original_title = $title;

    //create short title, if needed
    if (strlen($title)>40){
        $first_part = substr($title, 0, 23);
        $last_part = substr($title, -17);
        $title = $first_part."...".$last_part;
    }   

    $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'" title="'.$original_title.'">';
    $link = str_replace('%title', $title, $link);   
    $link = $string . $link . '</a>';

    $format = str_replace('%link', $link, $format);

    echo $format;   
}

function shrink_next_post_link($format, $link){
    $in_same_cat = false;
    $excluded_categories = '';
    $previous = false;
    $link='%title';
    $format='%link &raquo;';

    if ( $previous && is_attachment() )
        $post = & get_post($GLOBALS['post']->post_parent);
    else
        $post = get_adjacent_post($in_same_cat, $excluded_categories, $previous);

    if ( !$post )
        return;

    $title = $post->post_title;

    if ( empty($post->post_title) )
        $title = $previous ? __('Previous Post') : __('Next Post');

    $rel = $previous ? 'prev' : 'next';

    //Save the original title
    $original_title = $title;

    //create short title, if needed
    if (strlen($title)>40){
        $first_part = substr($title, 0, 23);
        $last_part = substr($title, -17);
        $title = $first_part."...".$last_part;
    }   

    $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'" title="'.$original_title.'">';
    $link = str_replace('%title', $title, $link);   
    $link = $string . $link . '</a>';

    $format = str_replace('%link', $link, $format);

    echo $format;   
}

add_filter('next_post_link', 'shrink_next_post_link',10,2);
add_filter('previous_post_link', 'shrink_previous_post_link',10,2);

Это все, что мне нужно было сделать. Спасибо!

0 голосов
/ 24 августа 2010
Функции

next_post_link() и previous_post_link() имеют опции настройки. http://codex.wordpress.org/Function_Reference/next_post_link. Прочитав это и узнав, каковы допустимые аргументы функции, проверьте, можно ли передать функцию php опции, например substr ().

<?php next_post_link('%link',substr('%title',20),FALSE);?>

'% link' и '% title' являются шорткодами для ссылки на пост и заголовка.

Дайте нам знать, если это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...