Qual é a diferença entre home_url () e site_url ()?

53

Meu entendimento é que site_url() retorna o local onde os arquivos principais do wordpress estão.

Então, se meu blog estiver hospedado em http://example.com/blog , então site_url() retornará http://example.com/blog

Mas como o home_url() é diferente? Para mim, home_url() retorna a mesma coisa: http://example.com/blog

Se isso estiver correto, posso fazer com que o wordpress retorne http://example.com/ ?

    
por Praveen 17.06.2011 / 20:07
fonte

5 respostas

43

Você está fazendo duas perguntas ao mesmo tempo:

  1. Qual é a diferença entre home_url() e site_url() ?
  2. Como obtenho o WordPress para retornar a raiz da URL sem o subdiretório onde ela está instalada?

Aqui estão as respostas, e eu confirmei com Andrew Nacin, um desenvolvedor central do WordPress, além de executar alguns testes de servidor para confirmar o que Andrew me disse.

Pergunta # 1

Em geral > As configurações do wp-admin, home_url() , fazem referência ao campo "Site Address (URL)". Confuso, hein? Sim, diz "Site Address", então você pode assumir site_url() , mas você estaria errado . Execute seu próprio teste e você verá. (Você pode descartar temporariamente um campo echo H1 com valores de site_url() e home_url() na parte superior das funções do seu tema.php.)

Enquanto isso, site_url() faz referência ao campo "Endereço do WordPress (URL)" em Geral > Configurações.

Portanto, se você quiser referenciar onde um caminho físico pode ser, como chamar o caminho da pasta de um plug-in na URL para carregar uma imagem ou chamar o caminho da pasta de um tema para carregar uma imagem, use outras funções para aqueles - olhe para plugins_url() e get_template_directory_uri() .

O site_url() será sempre o local onde você pode acessar o site, alinhando em /wp-admin no final, enquanto home_url() não seria confiável nesse local.

O home_url() seria o local em que você definiu sua página inicial definindo Geral > Definições "campo Endereço do site (URL)".

Pergunta # 2

Então, se eu tiver colocado meu blog em http://example.com/blog , e example.com for apenas algum site estático onde eu tenha um tema de portfólio, esse seria um cenário que se alinha com sua pergunta. Nesse caso, eu usaria esse snippet de código:

<?php
function getDomain() {
    $sURL    = site_url(); // WordPress function
    $asParts = parse_url( $sURL ); // PHP function

    if ( ! $asParts )
      wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result

    $sScheme = $asParts['scheme'];
    $nPort   = $asParts['port'];
    $sHost   = $asParts['host'];
    $nPort   = 80 == $nPort ? '' : $nPort;
    $nPort   = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort;
    $sPort   = ! empty( $sPort ) ? ":$nPort" : '';
    $sReturn = $sScheme . '://' . $sHost . $sPort;

    return $sReturn;
}
    
por Volomike 30.04.2012 / 02:54
fonte
7

Se você quiser que o WP seja instalado em um diretório, mas o site inicial na raiz do seu domínio, mova o arquivo index.php principal para a raiz do seu domínio e edite a instrução require para apontar dentro do diretório.

Este processo é descrito aqui: Dando ao WordPress seu próprio diretório .

    
por Milo 17.06.2011 / 20:12
fonte
2

Para responder à sua segunda pergunta:

  

Q: Se isso estiver correto, posso fazer com que o wordpress retorne enlace ?

Você não pode, a menos que adote as etapas Dando ao WordPress seu próprio diretório . Usar isso significa colocar os arquivos principais do WordPress em /blog ou /WordPress e, em seguida, em index.php em sua raiz.

Se você decidir colocar o WordPress em seu próprio diretório, use home_url() para ir para index.php e site_url() para obter arquivos principais e tal.

Refrências:
Codex para site_url
Codex para home_url
Codex para dar o próprio diretório do Wordpress

    
por xLRDxREVENGEx 17.06.2011 / 20:37
fonte
1

As funções site_url() e home_url() são semelhantes e podem gerar confusão sobre como elas funcionam. A função site_url() recupera o valor conforme definido no valor da tabela wp_options para o siteurl em seu banco de dados. Esta é a URL para os arquivos principais do WordPress. Se seus arquivos principais existirem em um subdiretório /wordpress em seu servidor da Web, o valor será http://example.com/wordpress . A função home_url() recupera o valor para home na tabela wp_options . Este é o endereço que você deseja que as pessoas visitem para visualizar seu site WordPress. Se os arquivos principais do WordPress existirem em /wordpress , mas você quiser que o URL do seu site seja http://example.com , o valor inicial deverá ser http://example.com .

    
por Nanhe Kumar 17.04.2013 / 09:41
fonte
-1

A maneira mais fácil de obter o URL do site sem nenhum subdiretório ( enlace em vez de enlace ), basta usar a barra invertida /

Por exemplo, se você digitar:

<a href="/">domain url</a>

Ele criará um link para seu domínio

    
por jake 05.05.2016 / 11:12
fonte