Больше результатов...

Generic selectors
Только точные совпадения
Искать в заголовках
Искать в контенте
Post Type Selectors
Filter by Categories
FAQ
Hostenko
Вдохновение
Видеоуроки
Новости
Плагины
Темы
Уроки
Хаки

Если вы используете какие-либо социальные медиа и, в частности, Twitter, — вы точно встречали шортлинки (сокращенные ссылки), которые работают как метки, указывающие на конкретную страницу, заменяя ее длинный адрес. На самом деле они используются уже лет десять, но их использование стало на самом деле популярным только с появлением сервисов сокращения ссылок, которые предоставляют статистику кликов, а также с ограничением количества символов в твитах.

Смотрите также:

У WordPress есть свой встроенный "сокращатель", который, по умолчанию, не особо заслуживает такого названия. Это ссылки вида www.yoursite.com?p=1, которые указывают на отдельную запись, и вы можете получить их, нажав на кнопку Получить короткую ссылку в окне редактирования вашей записи.

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!

Как добавить короткие ссылки в настраиваемые типы постов

Для этого есть своя причина: WordPress не хочет использовать никакой сторонний сервис для сокращения ссылок, и за стандартными короткими ссылками www.yoursite.com?p=1 стоит API, которое позволяет вам заменить его более обстоятельно сокращенным адресом от другого сервиса — или даже от вашего собственного.

Но короткие ссылки WordPress есть только для записей — но не для страниц или других типов записей. В этом коротком руководстве я покажу, как изменить это. И подобным образом вы сможете изменить стандартную сокращенную ссылку на ссылку из сервиса сокращения ссылок — тавтология, да.

Если копнуть в исходный код движка WordPress, а точнее нас интересует функция wp_get_shortlink(); из файла wp-includes/link-template.php, то мы увидим следующее:

function wp_get_shortlink($id = 0, $context = 'post', $allow_slugs = true) {
 
    // Allow plugins to short-circuit this function.
    $shortlink = apply_filters('pre_get_shortlink', false, $id, $context, $allow_slugs);
    if ( false !== $shortlink )
        return $shortlink;
 
        ...

Фильтр pre_get_shortlink позволит нам обойти стандартную обработку коротких ссылок WordPress. Чтобы сделать это, нашему плагину нужно просто зацепиться за этот фильтр и вернуть что-нибудь, отличное от ‘false’.

/**
 * A function which adds a shortlinks button for 'portfolio' post type
 */
function wptuts_shortlinks_for_portfolio( $shortlink, $id, $context ) {
 
    // Context can be post/blog/meta ID or query
    $post_id = 0;
 
    if ( 'query' == $context && is_singular( 'portfolio' ) ) {
 
        // If context is query use current queried object for ID
        $post_id = get_queried_object_id();
 
    }
    elseif ( 'post' == $context ) {
 
        // If context is post use the passed $id
        $post_id = $id;
 
    }
 
    // Only do something if of portfolio post type
    if ( 'portfolio' == get_post_type( $post_id ) ) {
        $shortlink = home_url( '?p=' . $post_id );
    }
 
    return $shortlink;
}
add_filter( 'pre_get_shortlink', 'wptuts_shortlinks_for_portfolio', 10, 3 );

Обратите внимание, что если вы не хотите менять короткую ссылку (например, это не тот тип записи), важно вернуть $shortlink (значение, полученное из фильтра, и переданное нам фильтром), а не ‘false’ — поскольку другие плагины уже, возможно, изменили $shortlink — и вернув значение false, вы перезапишете их изменения.

Источник: WP.tutsplus.com
inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующий на создание сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Комментарии к записи: 0

Добавить комментарий