Meu entendimento é que site_url()
retorna o local onde estão os arquivos principais do wordpress.
Então, se meu blog estiver hospedado em http://example.com/blog
, site_url()
retornaráhttp://example.com/blog
Mas então como é que home_url()
difere? Para mim, home_url()
retorna a mesma coisa:http://example.com/blog
Se estiver correto, posso obter o wordpress para retornar http://example.com/
?
Respostas:
Você está fazendo duas perguntas ao mesmo tempo:
home_url()
esite_url()
?Aqui estão as respostas, e eu confirmei com Andrew Nacin, desenvolvedor principal do WordPress, além de executar alguns testes de servidor para confirmar o que Andrew me disse.
Questão 1
Em Geral> Configurações de wp-admin,
home_url()
faça referência ao campo "Endereço do site (URL)". Confuso, não é? Sim, diz "Endereço do site", então você pode assumirsite_url()
, mas está errado . Execute seu próprio teste e você verá. (Você pode soltar temporariamente umecho H1
campo comsite_url()
ehome_url()
valores na parte superior das funções do seu tema.php.)Enquanto isso,
site_url()
faça referência ao campo "Endereço do WordPress (URL)" em Geral> Configurações.Portanto, se você deseja fazer referência a um caminho físico, como chamar o caminho da pasta de um plug-in no URL para carregar uma imagem ou chamar o caminho da pasta de um tema para carregar uma imagem, você deve realmente usar outras funções para isso - olhe
plugins_url()
eget_template_directory_uri()
.O
site_url()
sempre será o local onde você pode chegar ao local por aderência em/wp-admin
na extremidade, enquanto quehome_url()
não seria confiável este local.O
home_url()
estaria onde você configurou sua página inicial, definindo Geral> Configurações "Site Endereço (URL)" campo.Questão 2
Portanto, se eu coloquei meu blog
http://example.com/blog
eexample.com
é apenas um site estático em que tenho um tema de portfólio, esse seria um cenário alinhado à sua pergunta. Nesse caso, eu usaria este trecho de código:fonte
Se você deseja que o WP seja instalado em um diretório, mas no site da raiz do domínio, é necessário mover o arquivo index.php principal para a raiz do domínio e editar a instrução require para apontar para o diretório.
Esse processo é descrito aqui: Dando ao WordPress seu próprio diretório .
fonte
home_url()
porque estou no modo de rede wp. Eu só dei ao WordPress seu próprio diretório uma vez e simplesmente não era do meu agrado. Mas eu uso no entantowp_content_dir
em alguns sites.home/usr/public_html/site1
home/usr/public_html/site2
e assim por diante e, em seguida, owp_content_dir
geralmente é em um CDNTLDR:
Em uma instalação não padrão, você pode colocar seus arquivos do WordPress em um subdiretório da raiz do site.
... e ainda permita que seus visitantes acessem seu "site" do WordPress a partir do URL do domínio (raiz) do seu site, sem anexar o nome do subdiretório:
(por exemplo:
www.example.com
vswww.example.com/wordpress
):Onde o valor para uma constante WP tem precedência sobre um valor wp_options / WP Settings.
Configurações diferentes para WordPress
Nas instalações mais padrão do WordPress,
home_url
esite_url
terá o mesmo valor.Independentemente disso, eles representam duas coisas diferentes.
Em uma instalação não padrão , eles podem ter valores diferentes.
(
//
é orelative
protocolo e funcionará para ambos /http://
ouhttps://
)Instalações padrão (incluindo instalações com "um clique")
home_url
: é a página inicial do site (wordpress), conforme indicado na barra de endereços do usuário.site_url
: é o diretório em que seus arquivos wordpress estão localizados.A instalação de 5 minutos do WordPress instala arquivos wordpress, esses dois valores serão os mesmos - os arquivos wordpress serão instalados na mesma pasta que você deseja que as pessoas usem para acessar seu site ou na parte wordpress (blog) do site do servidor.
Exemplo 1:
usuário acessa o seu blog em:
www.example.com
,arquivos wordpress instalados em:
www.example.com
ou a pasta raiz do site do seu servidor.home_url
===site_url
==="www.example.com"
Exemplo 2:
usuário acessa o seu blog em:
www.example.com/blog
,arquivos WordPress instalado em:
www.example.com/blog
ou nablog
pasta dentro da raiz do seu site.home_url
===site_url
==="www.example.com/blog"
Nesse caso,
www.example.com
é o site principal ewww.example.com/blog
é a raiz do seu blog.Aqui o seu blog é separado e funciona como subconjunto do seu site principal.
Nesse caso, seu site principal não é controlado, definido ou estilizado pelo WordPress.
Apenas o seu blog é. Todos os URLs do seu blog serão processados por
www.example.com/blog
Nota: Na documentação, "site / site do Wordpress" (em vez de simplesmente "site / site") refere-se ao diretório em que os arquivos do WordPress estão instalados. Neste caso, é
www.example.com/blog
- tudo dentro dablog
pasta. O "site WordPress", nesse cenário, não é o mesmo que seu domínio, sua raiz ou seu site principal. É um subconjunto do seu site em geral. Como um site dentro de um site. Menciono isso, pois a terminologia pode parecer pouco clara ou confusa, dada essa configuração específica.Configuração alternativa de instalação do WordPress
Dando WordPress seu próprio diretório , a seção
Method II (With URL change)
.Por exemplo, muitas pessoas não querem entupir a pasta raiz do site com todos os arquivos wordpress.
Eles querem instalar o wordpress em um subdiretório, * mas têm o "blog" ou o "site WordPress" acessado como se os arquivos estivessem instalados na raiz da raiz do servidor do site.
Isso é particularmente verdadeiro quando o WordPress é usado para criar e executar um site inteiro que nem sequer possui um "blog".
Exemplo 3:
usuário acessa seu "blog" em:
www.example.com
,arquivos wordpress instalados em:
www.example.com/wordpress
ou a pasta raiz do site do seu servidor.home_url
==="www.example.com"
site_url
==="www.example.com/wordpress"
(Nota: essa configuração não funcionará "pronta para uso" apenas alterando os valores dessas variáveis. Requer alterações adicionais na configuração para funcionar corretamente.
Consulte Consulte Dando ao WordPress seu próprio diretório , a seção intitulada
Method II (With URL change)
como fazer isso.No presente caso
home_url
esite_url
deve conter valores diferentes.Nesta configuração, você deseja que seu site funcione exatamente como se os arquivos do WordPress estivessem instalados no diretório raiz do servidor ...
MAS, para fins organizacionais no servidor,
você realmente tem seus arquivos do WordPress em uma pasta chamada
wordpress
na pasta do servidor. diretório raiz do seu site.Então, o usuário digitará
www.example.com
para obter sua página inicial do WordPress, em vez dewww.example.com/wordpress
função wordpress <--> variável de banco de dados <--> Wordpress Constant
(Os outros casos são triviais: todas as variáveis / funções mantêm / retornam o mesmo valor.)
Como definir os valores parasite_url
ehome_url
Primeiro, deixe-me notar que
siteurl
ehome
armazenar valores devolvidos pelas funções acima1) Normalmente, você define esses valores no painel de backend / painel / administrador do
Settings -> General ->
siteurl
WordPress: Endereço do WordPress:https://www.example.com/wordpress
home
Endereço do site:https://www.example.com
(não inclua barras finais aqui - isso seria configurado em outro lugar)
2) Como alternativa, você define esses valores no banco de dados do WordPress:
wp_options
tabela ->(não inclua barras finais aqui - isso seria configurado em outro lugar)
3) Edite suas
wp-config.php
Define essas constantes específicas para manter seus valores
Defina
WP_HOME
eWP_SITEURL
configurações inserindo estas linhas na parte superior do seuwp-config.php
arquivo:(não inclua barras finais aqui - isso seria configurado em outro lugar)
Referência: WP_SITEURL e WP_HOME
NOTA: Isso é confuso
(eu realmente gostaria que o WordPress tivesse rotulado as configurações de maneira semelhante aos nomes php,
como
Wordpress Site Address
eHome Page Address
ou algo mais explícito comolocation of WordPress Site core files
ebrowser url to access WordPress home page
)Agora aqui é onde fica complicado!
Se você definiu essas constantes no seu
wp-config.php
arquivo, não importa quais valores você tem na sua página de banco de dados / configurações.De fato, você não poderá modificar esse valor até o final (ele ficará acinzentado). Você ainda pode modificar modificando seu banco de dados, mas isso não terá efeito no site, enquanto as constantes existirem no arquivo wp-config.
Seu arquivo de configuração não alterará os valores no seu banco de dados (ou, portanto, na sua página de configurações). Em vez disso, os valores da página de banco de dados / configurações serão ignorados . Os valores no wp-config substituem ou têm precedência sobre a configuração do banco de dados.
Então ... para finalizar (TLDR):
Onde o valor para uma constante WP tem precedência sobre um valor wp_options / WP Settings.
O valor do registro wp_options e o valor WP Settings são os mesmos.
Editar um, por definição, edita o outro.
São apenas duas maneiras diferentes de acessar a mesma variável.
Por outro lado, as constantes do WordPress são únicas e independentes.
Internamente, as constantes do WordPress (PHP) substituem seus equivalentes de banco de dados.
Se uma constante é definida no wp-config, ela não altera o banco de dados.
Mas internamente o WordPress sempre prefere / usa seu valor em vez do db.
fonte
As funções
site_url()
ehome_url()
são semelhantes e podem causar confusão na maneira como elas funcionam.A
site_url()
função recupera o valor do valorsiteurl
nawp_options
tabela em seu banco de dados.Este é o URL para os arquivos principais do WordPress.
Se seus arquivos principais existirem em um subdiretório
/wordpress
no servidor da web, o valor seriahttp://example.com/wordpress
.A
home_url()
função recupera o valor parahome
nawp_options
tabela em seu banco de dados.Este é o endereço que você deseja que as pessoas visitem para visualizar seu site WordPress.
Se os arquivos principais do WordPress existirem
/wordpress
, mas você deseja que o URL do site sejahttp://example.com
o valor inicialhttp://example.com
.fonte
Para responder sua segunda pergunta:
Você não pode, a menos que siga as etapas do diretório Dando ao WordPress . Usando isso, você coloca os arquivos principais do WordPress em
/blog
ou,/WordPress
e depoisindex.php
em sua raiz.Se você decidir colocar o WordPress em seu próprio diretório, use-o
home_url()
para obterindex.php
esite_url()
obter arquivos principais e tal.Refrences:
Codex para
site_url
Codex para
home_url
Codex para dar o próprio diretório do Wordpress
fonte
A maneira mais fácil de obter o URL do site sem subdiretórios ( http://example.com/ em vez de http://example.com/blog ), basta usar a barra invertida /
Por exemplo, se você digitar:
Ele criará um link que vai para o seu domínio
fonte
/
para este local, em um local diferente, OP pode esperar um subdiretório a ser devolvido. Depende da configuração do WP para cada site.