Includowanie już wykonanego skryptu

0

Witam!

Mam wordpress, chcę wstawić jego nagłowek i stopkę do templatów innych skryptów, które używam. Najprościej byłoby skopiować kod html z wyniku, i wkleić, ale wtedy stracę dynamikę - modyfikowanie menu itp.

Wordpress daje możliwość wstawienia nagłówka i stopki poprzez kod:

<?
require('wp-load.php');
include('wp-content/themes/theme/header.php');
?>

Niestety powstaje wtedy u mnie konflikt skyptów, nazw funkcji, i takie wstawienie nie działa. Do tego mam jeszcze powiązane bazodanowo phpBB z Wordpressem stąd szukam innego rozwiązania.

Wymyśliłem, że wykonam "na boku", w osobnym pliku (plik.php) to powyższe, a potem wynik już jako czysty HTML+CSS, dodam do header templatki mojego skryptu i będzie działało. Zrobiłem to tak:

plik.php

<?
require('wp-load.php');
ob_start();
include('wp-content/themes/theme/header.php');
$header_output = ob_get_contents();
ob_get_clean();
?>

Całość includuję tak do header.html (templatka z obługą php):

<?
include('plik.php');
echo($header_output);
?>

Niestety znowu powstaje konflikt, czyli nie includuję wyniku, tylko jednak skrypt.

Przetestowałem sam plik.php robiąc w nim echo($header_output); i działa.

Potem wpadłem na pomysł, że przecież konflikty biorą się z wp-load.php, zatem trzeba go includować do bufora. Zrobiłem tak:

plik.php

<?
ob_start();
require('wp-load.php');
include('wp-content/themes/theme/header.php');
$header_output = ob_get_contents();
ob_get_clean();
?>

Niestety nic to nie zmieniło.

Czy ktoś może mi poradzić gdzie popełniam błąd, ewentualnie inne rozwiązanie? Co zrobić, by zawartość wp-load.php nie trafiała do templatki?

0

Jakie błędy wywala ? :)

0

No kolizję z innymi skryptami? redeklarowanie funkcji np.?

0

Jak możesz to skopiuj i wklej błędy.

0
Fatal error: Cannot redeclare get_categories() in /home/public_html/wp/wp-includes/category.php on line 22

Taki jest błąd, ale ja wiem jaki jest powód tego błędu - akurat tuaj dwukrotna nazwa funkcji w dwóch róznych skryptach, które trafiają do jednego pliku.

Dlatego właśnie chcę includować już po wykonaniu - opis problemu jak wyżej.

0

Używaj require_once/include_once lub metody "na ce":

if (defined('MY_FILE')) {
  return;
}

define('MY_FILE', true);

kod
0

Mam teraz:

<?
ob_start();
require_once('wp-load.php');
include('wp-content/themes/theme/header.php');
$header_output = ob_get_contents();
ob_get_clean();
?>

oraz:

<?

include('test.php');
echo($header_output);

?>

Niestety nic to nie zmieniło.

0

include('wp-content/themes/theme/header.php');

0

Nie do końca rozumiem.
Przecież specjalnie includuję to w ob_start do innego pliku (test.php), aby się tam wykonało, a potem includuje ten plik do mojego nagłowka (header.html) już wykonany. Gdzie mam wstawić ten kod?

0

Wróć - miałem na myśli, aby było tam include_once, nie zauważyłem, że nie poprawiłem tego.

0

mam teraz:

<?
ob_start();
require_once('wp-load.php');
include_once('wp-content/themes/theme/header.php');
$header_output = ob_get_contents();
ob_get_clean();
?>

i

<?
 
include('test.php');
echo($header_output);
 
?>

Nadal bez zmian.

0

Pewnie ten header.php jeszcze sam w sobie wczytuje coś, co już jest ładowane przez wp-load.php - możesz potwierdzić?

0

Wydaje mi się, że nie, bo jak zrobię coś takiego:

test.php

<?
ob_start();
require_once('wp-load.php');
include_once('wp-content/themes/theme/header.php');
$header_output = ob_get_contents();
ob_get_clean();

echo($header_output);
?>

To tutaj nie mam błędów, zatem wp-load.php i header.php się nie gryzą. Gryzie się z tym, co parsuje header.html, czyli plik, do którego icluduję.

Nadal trochę zawodzę się nad ob_start() - myślałem, że będzie mi do zmiennej przekazany już wynik skryptu, bez treści funkcji...?

0

myślałem, że będzie mi do zmiennej przekazany już wynik skryptu, bez treści funkcji...?

Hę?

0
  1. gryzą mi się skrypty, w sumie są 3, które mają takie same nazwy zadeklarowanych funkcji. Nie mogę ich edytować etc. Zatem by ominąć ten problem chcę wykonać to, co dzieje się w header.php "na boku", w buforze, a potem już gotowy wynik, czyli czysty kod html includować do pliku header.html, gdzie następuje wywalanie tego błędu.
  2. Zrobiłem zatem jak w pierwszym poście - osobny plik test.php, do którego includuję wp-load.php i header.php - pokazują nagłówek w html - wszystko działa. Zapisuje wynik ich działania do bufora ob_start() i dalej do zmiennej $header_output.
  3. Do header.html (templatka, obsługuje php) includuję zatem test.php, i robię echo tego, co w buforze, czyli $header_output. Niestety wywala mi błąd - funkcje się nadal gryzą, czyli nie includuje mi się wynik, tylko jednak pliki z funkcjami. Jak zrobić, by includowało mi tylko zawartość $header_output bez wp-load.php i header.php? Myśłałem, że rozwiązaniem jest ob_stert() i bufor właśnie.
  4. Dla testu zapisałem zawartość (przez fwrite()) $header_output do pliku tekstowego - wygenerował się właśnie czysty htmlo, bez zawartości plików php. Zatem wydaje się, że coś jednak jest nie tak z includami...
  5. W teorii mógłbym teraz includować zawartość tego pliku textowego, ale uważam za niewydaje za każdym razem generowanie pliku textowego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1