Inclua um arquivo PHP externo em um modelo personalizado do WordPress
-
-
Dê uma olhadaem http://codex.wordpress.org/integrating_wordpress_with_your_website deve responder suapergunta.Take a look at http://codex.wordpress.org/Integrating_WordPress_with_Your_Website should answer your question.
- 0
- 2013-08-26
- Mark Davidson
-
Vocêpode usarisso.Qual é oproblema que vocêestáenfrentando?You can use it. What's the problem are you facing?
- 1
- 2013-08-26
- Vinod Dalvi
-
Oi,eu apenas copieimeus arquivos dentro dapasta WordPresse os vinculei corretamente. De qualquerforma,qual é a resposta sobreestapergunta?Eu só recebo umapáginabrancaem brancohi, i just copied my files inside the wordpress folder and linked them properly.. anyway, whats the answer on this question? I just get a blank white page
- 0
- 2013-08-26
- Jeremi Liwanag
-
Apenasparaficar claro,vocêestátentandoincluir arquivos queestão localizadosem um siteexterno?Em caso afirmativo,aspermissões atuais do site de arquivos PHPpermitem acessopúblico de leitura aesses arquivos?Just to be clear, you are trying to include files that are located on an external site? If so, do the current permissions of the php files site allow public read access to these files?
- 0
- 2014-02-13
- iyrin
-
6 respostas
- votos
-
- 2014-03-25
Não,vocênãopodeincluir arquivos PHPem umtema dojeito que vocêindicou.
Para ver oporquê,tudo o quetemos afazer éexercitar algumbom sensoe pensamento críticobásico:
- .
- vocêestariafazendo uma solicitação remotapara um servidor remoto
include
nãopodefazerisso - Sepor algummilagrefuncionou,vocêteria umagrande segurança de segurança,poispoderiafazer algo assim:
include( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
. Imagine como seriafácil hackear sites! O que éme impedirincluindofacebook.com/index.php
? - Se,mesmo assim,de algumaformafuncionou,e foi seguro,imagine a lentidão! Vocêfaz uma solicitação ao servidore,em seguida,o servidor vaie faz outropara o cabeçalho,e outropara abarra lateral,e outropara o rodapé,tudo o queespera,quempoderia serincomodado?
- Mas,finalmente,mesmo seincluirpoderiafazer solicitações remotas. O quenãopode,por que retornaria o código PHP? Não vai retornar o que o servidor cospe,também conhecido como o HTMLfinalizado? O servidorexecuta qualquer PHP antes de ser devolvido,entãonão haveriaphpno que vocêestáincluindo ..
Entãonão,não épossível. Mas umapasta rápida de cópia do códigoem suaperguntaem um script PHP seguida de uma visita rápidateria dito quemais rápido do que qualquer um aqui.
Em vez disso,você sópodeincluir arquivos do sistema de arquivos local Seu servidorestá sendoexecutadonomomento. Vocênuncapassariaem uma URLpara uma declaração deinclução ouexigir.
Então,seeuestiverem index.php,e há um arquivonamesmapasta chamada Sidebar.php,euincluí-lo assim:
include('sidebar.php');
include
retorna um valor seissofalhou. A semântica da declaração Incluir é General Basic PHPe estáfora dotópiconesta Q & AMP; um site.Noentanto,mantiveestapergunta abertaporque há umafunção de API do WordPress que você deve usarem vez disso,émelhor queincluire exigirpara o que vocêprecisa.
Paraincluir umaparte demodeloem umtema,use:
get_template_part( 'partname' );
Estafunçãotambém analisará dentro de umtemafilho oupaipara aparte que vocêespecificou.
Porexemplo,neste código:
get_template_part( 'sidebar', 'first' );
iráprocurare incluir oprimeiro achado destes:
- filhostema
sidebar-first.php
- temapai
sidebar-first.php
- Temainfantil
sidebar.php
- temapai
sidebar.php
Deve-senotar,que você deve usar apenas Get_Template_Partparaincluir arquivos demodelo. Não useparaincluir arquivos comobibliotecas ou outros arquivos PHP quenãoproduzem HTML.
Eu sugiro que você leia os seguintes assuntos antes de continuar:
- ainclusãoe exigefunçõesnophp.net
- temaspaie filho
- a hierarquia demodeloe como o WordPressescolhe qualmodelo usar
-
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
-
get_template_part
- o
WP_HTTP
API,para aquelestemposgenuínos você realmenteprecisafazer uma solicitação remotapara uma API. Funções comowp_remote_get
ewp_remote_post
vai ajudar aqui. - depuração dophp. Suaspáginasbrancas sãoerrosfatais do PHP,masporque vocêtem erro de log deerrospara ocultá-lo apartir dofrontend,eleestá sendo registradoem um arquivo de log deerros que vocêinconsciente. Encontre seu log deerros,defina
WP_DEBUG
no seuwp-config.php
e instale umplugin,comobarra de depuração oumonitor de consulta,eles ajudarãoenormemente. Certifique-se de ligarwp_footer
em seusfooter demodelos.
No, you cannot include PHP files in a theme the way you indicated.
To see why, all we have to do is exercise some common sense and basic critical thinking:
- You would be doing a remote request to a remote server
include
cannot do this - If by some miracle it worked, you would have a major security exploit as I could then do something like this:
include( 'http://yoursite/wp-config.php' ); echo DB_PASSWORD;
. Imagine how easy it would be to hack websites! Whats to stop me includingfacebook.com/index.php
? - If even then it somehow worked, and it was secure, imagine the slowness! You make a request to the server, and then the server goes and makes another for the header, and another for the sidebar, and another for the footer, all that waiting, who could be bothered?
- But finally, even if include could make remote requests. Which it can't, why would it return PHP code? Won't it return what the server spits out, aka the finalised html? The server runs any PHP before it gets returned so there'd be no PHP in what your including..
So no, it's not possible. But a quick copy paste of the code in your question into a PHP script followed by a quick visit would have told you that quicker than anybody here.
Instead, you can only include files from the local file system your server is currently running on. You would never pass in a URL to an include or a require statement.
So if I'm in index.php, and there is a file in the same folder called sidebar.php, I would include it like this:
include('sidebar.php');
include
returns a value if this failed. The semantics of the include statement are general basic PHP and are off topic on this Q&A site.However I kept this question open because there is a WordPress API function you should be using instead that is better than include and require for what you need.
To include a template part in a theme, use:
get_template_part( 'partname' );
This function will also look inside a child or parent theme for the part you specified.
For example, in this code:
get_template_part( 'sidebar', 'first' );
It will look for and include the first it finds of these:
- child theme
sidebar-first.php
- parent theme
sidebar-first.php
- child theme
sidebar.php
- parent theme
sidebar.php
It should be noted, that you should only use get_template_part to include template files. Don't use it to include files such as libraries, or other PHP files that do not output html.
I suggest you read up on the following subjects before continuing:
- the include and require functions on PHP.Net
- parent and child themes
- the template hierarchy and how WordPress chooses which template to use
<?php php ?> <?php tag ?> <?php spam ?> <?php and ?> <?php why ?> <?php its ?> <?php bad ?>
get_template_part
- the
WP_HTTP
API, for those genuine times you really need to do a remote request to an API. Functions such aswp_remote_get
andwp_remote_post
will help here. - PHP Debugging. Your white pages are PHP Fatal errors, but because you have error logging set to hide it from the front end, it's being logged to an error log file you're unaware of. Find your error log, define
WP_DEBUG
in yourwp-config.php
and install a plugin such as debug bar or query monitor, these will help you enormously. Make sure you callwp_footer
in your templates footer though.
-
- 2014-02-13
Suponha que vocêtenhaesse cenário:
Suainstalação do WordPress é hospedadanapasta raiz 'www' como seu site,e seu cabeçalhoestá ativado 'www/inclui'pasta.
em seutema WordPress,basta adicionar
& lt;?php incluir ('inclui/header.php'); ?>
Quando o WordPress lê arquivostemáticos,ele usa o caminho da raiz.
suppose you have this cenario:
Your wordpress instalation is hosted on 'www' root folder as your site, and your header.php is on 'www/includes' folder.
In you wordpress theme, just add
<?php include('includes/header.php'); ?>
When WordPress reads theme files, it uses the root path.
-
- 2014-02-03
Vocênãopodeincluir um recursoexternoem
include()
funções!Incluirtrabalhospor caminhosinternos do servidor.Vocênãopodeincluir um URL como quiser.É umproblema de segurança PHP!Vocêpode usar:
get_file_contents('http://your.url');
ou use umabiblioteca de curl.
You cannot include an external resource on
include()
functions! Include works by server internal paths. You cannot include an url as you want. It's a PHP security problem!You can use:
get_file_contents('http://your.url');
or use a Curl library.
-
Porfavor,adicione umaboa quantidade deexplicação com suas respostaspara ajudar o usuário aentender seuponto.Please add a good deal of explanation to your answers to help the user understand your point.
- 1
- 2014-02-03
- Maruti Mohanty
-
- 2017-01-12
Quandoeu verifiquei os arquivosprincipais,a seguir é o código queencontreipara No arquivo
wp/wp-includes/general-template.php
parafunçãoget_header()
Euencontrei as seguintes linhas
$templates[] = 'header.php'; locate_template( $templates, true );
Entãoeuestou usandonomeu código (
index.php
) comoeste<?php get_header(); $myphpfile[] = 'grid.php'; locate_template( $myphpfile, true ); ?>
When i checked the core files following is the code i found for in the file
wp/wp-includes/general-template.php
for functionget_header()
i found following lines
$templates[] = 'header.php'; locate_template( $templates, true );
So I am using it in my code (
index.php
) like this<?php get_header(); $myphpfile[] = 'grid.php'; locate_template( $myphpfile, true ); ?>
-
- 2018-04-24
Para a criançatema:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
Vocêpode usar
For Parent Theme: get_template_directory() or get_template_directory_uri() For Child Theme: get_stylesheet_directory() or get_stylesheet_directory_uri()
For Child Theme:
<?php echo get_stylesheet_directory_uri().'/subfoldername/add.php';?>
You can use
For Parent Theme: get_template_directory() or get_template_directory_uri() For Child Theme: get_stylesheet_directory() or get_stylesheet_directory_uri()
-
- 2020-05-04
Pode ser umaforma ruimparapostarem umaperguntatão antiga,mas recentementetive quefazer algoparecidoe acheieste resultado ao usar ummétodonãomostrado aqui. Fazendoissopara osfuturosexploradores;).
Meu caso de usofoi:
- wordpressinstaladono subdiretório
- Eu queriaincluirelementos de rodapé/cabeçalho do sitepai,em vez de usar o WordPressparaesseselementos
Porque
include ()
ourequer ()
pode usar caminhos de servidor absoluto (porexemplo:/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
),podemos usar o WordPress 'Abspath
Definiçãoparageraristo:Incluir (dirName (Abspath). '/includes/header.php');
Isso retornará
/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
.Mesmo quando o WordPressestáem um subdiretório (porexemplo:
/var/www/vhosts/foo.bar/httpdocs/blog/
),DirName (Abspath)
nos dá a raiz do documento,independentemente.Pode haver outrasmaneiras defazerisso,usando o servidor
$ _ ['document_root']
superglobalporexemplo,maseunãoexploreiisso.Might be poor form to post on such an old question, but I recently had to do something similar and found this result while using a method not shown here. Jotting it down for future explorers ;).
My use case was:
- Wordpress installed in subdirectory
- I wanted to include footer/header elements from the parent site, rather than using wordpress for these elements
Because
include()
orrequire()
can use absolute server paths (eg:/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
), we can use Wordpress'ABSPATH
definition to generate this:include( dirname( ABSPATH ) . '/includes/header.php' );
this will return
/var/www/vhosts/foo.bar/httpdocs/includes/baz.php
.Even when Wordpress is in a subdirectory (eg:
/var/www/vhosts/foo.bar/httpdocs/blog/
),dirname( ABSPATH )
gives us the document root regardless.There might be other ways to do this, using the
$_SERVER['DOCUMENT_ROOT']
superglobal for example, but I didn't explore that.
Épossívelincluir um arquivo PHPexternoem ummodelopersonalizado?
Estoutentando adicionar umblognomeu site. Eujátenho o layout de cabeçalho,rodapée barra lateralnomeu site. Posso usar aquelesnomeumodelopersonalizado?
Eutambémtentei: