web-dev-qa-db-pt.com

Como usar links relativos nas minhas páginas?

Em minhas páginas da Web, desejo usar links relativos em vez de links absolutos.

No entanto, as páginas não permitem o código php dentro delas, então não posso fazer de uma URL de maneira relativa.

Como se obtém URLs relativas dentro de páginas wordpress para que a mudança de nomes de domínio não afete os links?

4
pdeva
$my_url = 'my/relative/url.php';
echo site_url($my_url);

site_url () quando usado por si só retornará o caminho absoluto para o seu blog. Mas, se você adicionar um argumento a ele, conforme o meu exemplo acima, ele irá preceder o caminho absoluto para o seu caminho. Apenas certifique-se de que seu URL não contenha uma barra inicial (por exemplo:/this/may/not/work).

Finalmente, se você tiver o seu wordpress instalado na raiz do seu servidor, você pode usar um caminho relativo ao servidor (isso usa a barra inicial para indicar a partir da raiz do servidor). Portanto, se o seu blog estiver instalado em http://www.me.com/blog, você poderá acessar seus links relativos com segurança com /blog/my_link.php.

5
Tom Auger

O WordPress tem uma função incorporada para remover protocolos e domínios de URLs absolutos, wp_make_link_relative, localizados em /wp-includes/formatting.php:

function wp_make_link_relative( $link ) {
    return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
}

Para aplicar essa função a (por exemplo) permalinks, basta adicionar um filtro, como tal:

add_filter( 'the_permalink', 'wp_make_link_relative' );

Dicas de blog de luxo mostra como aplicar isso a vários tipos de links, garantindo que os links de feeds e sitemap não sejam afetados:

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    // Don't do anything if:
    // - In feed
    // - In sitemap by WordPress SEO plugin
    if ( is_feed() || get_query_var( 'sitemap' ) )
        return;
    $filters = array(
        'post_link',
        'post_type_link',
        'page_link',
        'attachment_link',
        'get_shortlink',
        'post_type_archive_link',
        'get_pagenum_link',
        'get_comments_pagenum_link',
        'term_link',
        'search_link',
        'day_link',
        'month_link',
        'year_link',
    );
    foreach ( $filters as $filter )
    {
        add_filter( $filter, 'wp_make_link_relative' );
    }
}
6
Daze
2
Bainternet

Eu costumava usar shortcode com get_bloginfo para caminhos relativos dentro do conteúdo real da postagem. Eu ia transformá-lo em um plug-in completo, mas eu poderia jurar que o pessoal liberou um que eu não consigo mais encontrar. Aqui está um exemplo simples de como funciona, já que não consigo encontrar o meu atm já que eu não uso mais, de acordo com o post da Bainternet, talvez o pessoal da automatic percebeu isso também.

Uma função simples de código de acesso que retornará seu URL base:

function my_relative_post_image_link() {
$linky = get_bloginfo('wpurl');
echo $linky;
}
add_shortcode('posty', 'my_relative_post_image_link');

Se o seu site for example.com, colocar o shortcode [posty] no seu conteúdo retornará example.com como texto.

Para fazer uso real disso, você precisará personalizar a função usando mais parâmetros de get_blogfino e envolvê-la nas tags html necessárias http://codex.wordpress.org/Function_Reference/get_bloginfo

1
Wyck

Eu acho que existe um plugin Absolute Relative Links que irá substituir todos os links em suas páginas com links relativos. Funciona muito bem, o que significa que você não precisa voltar e consertar quaisquer links antigos que ainda sejam absolutos.

0
icc97

Esta função deve ser colocada no functions.php do seu tema. Isso tornará todos os permalinks relativos.

// make root relative
function make_href_root_relative($input) {
    return preg_replace('!http(s)?://' . $_SERVER['SERVER_NAME'] . '/!', '/', $input);
}
function root_relative_permalinks($input) {
    return make_href_root_relative($input);
}
add_filter( 'the_permalink', 'root_relative_permalinks' );

As imagens no conteúdo devem usar links absolutosIFas imagens saem para alimentar os leitores. Se as imagens usarem links relativos, os leitores de feed tentam carregar as imagens de seus próprios domínios. Há um pequeno impacto no desempenho no uso de links relativos a imagens também. Não parece fazer qualquer diferença com os permalinks relativos.

Em alguns servidores, talvez seja necessário adicionar href de base à raiz do seu site para garantir que os links funcionem conforme o esperado.

0
Elpie