Support » Kokeneille käyttäjille » Include(…) ei ole käytettävissä?
Include(…) ei ole käytettävissä?
-
20 v. sitten tein PHP:llä sivuja, joissa oli staattisia HTML-palikoita include(’xxx.inc’), käyttäen.
Kokeilin vastaavaa WordPressin kanssa. Ei toiminut. Kaiketi pois käytöstä turvallisuussyistä. Tosin HTML-tiedosto ei ole mikään riski.
-
Kyllä include toimii, pakkohan sen on, muuten esimerkiksi monimutkaiset lisäosat olisi pakko kirjoittaa yhdeksi tiedostoksi (ja includella WP ne plugaritkin mukaan lataa).
Ei siis mitään systemaattista ongelmaa tässä, kyse on vain siitä missä ja miten includea käyttää. Eli annahan vähän kontekstia.
(Include ei muuten ole funktio, vaan statement, joten se ei käytä sulkuja:
include xxx.inc;
)Laitoin osoitteeksi normaalin www-osoitteen. Tässä kaiketi pitäisi laittaa serverin osoite.
Mitenkähän Code Snippet kanssa pitää menetellä. Mikä sille on lähtöhakemisto?
jos WordPress on
public_html/wordpress ja haluan laittaa lisätiedostot
public_html/
Kokeilin$infotexts= include $_SERVER[’DOCUMENT_ROOT’].’infoText.html’;
html-pääte siksi, että voisi editorissa tarkistaa syntaksin.vaihdoin päätettä ja jätin ” pois:
$infotexts= include $_SERVER[’DOCUMENT_ROOT’].infoText.inc;
tiedostoa ei löytynyt, sillä haluttua teksti ei tullut.
laitoin tiedostot hakemistoihin
public_html/wordpress
public_html/kokein pelkällä
$infotexts= include infoText.inc;
ei auttanut sekään. Eikö tuota include voi käyttää muuttujassa?
pitäisikö sitten laittaa se muuttuja include-tiedoston sisään eli
$infotexts=’…’ on siinä inc-tiedostossa?
Mutta mikä on polku?
include infoText.inc;
include $_SERVER[’DOCUMENT_ROOT’].infoText.inc;
ei löytynyt näihin laitettuna:public_html/wordpress
public_html/Tiedostosta saisi selvemmän kun pitkät HTML-tekstit saisi muualle. Ja niitä kaikkia ei tarvitsisi edes aina hakea, jos tällainen kävisi
if(is_bbpress(){
include XXX.infoText.inc; //XXX on oikea polku
}
jos tiedostot laittaa juureen worpress päivitys ei poistaisi niitä- Tätä vastausta muokkasi 4 vuotta, 7 kuukautta sitten tapiohuuhaa.
Includeen ei tosiaan mitään osoitteita, vaan palvelimen hakemistopolku. Code Snippetsin lähtökohta selviää printtaamalla snippetissä ulos mitä
dirname( __FILE__ );
palauttaa, se voisi olla hyvä lähtökohta.Ja include ei tosiaan ole funktio, joten se ei myöskään palauta mitään arvoa. Includella ei siis voi laittaa muuttujaan mitään, vaan includella haetaan sisään tiedosto, joka suoritetaan sellaisenaan.
dirname( __FILE__ )
palautti lisäosan asennushakemiston.
Kokeilin näitä:
include ’/home/sanarist/public_html/infoText.inc’;//Code Snippet vaatii lainausmerkit
laitoin kopion plugins-hakemistoon
include ’../infoText.inc’;Ei löydy.
Code Snippet vaatii tohon lainausmerkit. No ei tämä suuri asia ole, mutta tiedostoa olisi vain helpompi lukea, kun isot HTML-lohkot olisivat muualla.Kyllä includella pitää olla lainausmerkit, on rumaa käyttää ilman.
Voi olla, että Code Snippetsissä on include jotenkin estetty; WP:n koodin tasolla sellaista estoa ei kuitenkaan ole.
Mahdollisesti Code Snippet estää sen, sillä se ei pysty tarkistamaan kokonaisuuden syntaksia. Olisihan PHP-koodi suuri riski.
Ihan pieni huomio sen syntaksin tarkistuksesta.
$muuttuja .=
ei sille käy vaan on pakko laittaa $muuttuja = @muuttuja…
Ei mikään suuri haitta.
Jos laittaisin include teeman header.php:hen, mikä pitäisi laittaa poluksi, jos haluan sijoittaa lisätiedoston
- public_html kansioon kun WP on public_html/wordpress hakemistossa
- Themes-hakemistoon
Sijaintihan pitää olla sellainen, että tiedostot säilyvät WP,lisäosa tai teema päivitettäessä.
Voiko pääte olla inc sijasta html,jotta koodi puhdas html olisi helpommin tarkistettavaa?
- Tätä vastausta muokkasi 4 vuotta, 7 kuukautta sitten tapiohuuhaa.
Jos tiedostossa on html:ää, niin kyllä html on ehdottomasti parempi pääte, kertoo heti mistä on kyse, ja jos liitetään php-koodia, niin sitten .php.
Teemahakemiston sijainnin saa
get_theme_root()
, tuo palauttaa hakemiston ilman lopussa olevaa kauttaviivaa. WordPressin asennushakemiston saaget_home_path();
Täytyy tutkia noilla.
Ymmärtääkseni tämä toimisi:
include get_theme_root().’/infoText.html’; // themes hakemistoon – tähän tarvinnee /-merkin. Voisi olla järkevin.
get_theme_root() ei ole oikein järkevä, koska juurihakemistoon sijoitettuna kaikki häviää päivitettäessä.
Kiitti. Osan kaikkialla käytettyä html:ää voisi laittaa header.php kautta include avaulla haettavaksi, jotta se tulisi helpommin oikein. Ilman syntaksitarkistusta tulee helposti pieniä virheitä.
- Tätä vastausta muokkasi 4 vuotta, 7 kuukautta sitten tapiohuuhaa.
- The topic ‘Include(…) ei ole käytettävissä?’ is closed to new replies.