thomek205
18.06.2014, 21:38:31
Cześć.
To mój pierwszy post na tym forum- nie ukrywam, że jestem dość dużym laikiem w tych sprawach, ale próbuje rozwiązać mój problem. Używałem wyszukiwarki na forum, ale przyznam uczciwie, że nie rozumiem do końca rozwiązań które podajecie.
Chciałem dodać na stronie przycisk ,,translate", który by ją tłumaczył na angielski. Wkleiłem odpowiedni kod, ale coś przekręciłem i przez 2 godziny nie mogłem się nawet zalogować do wordpress. Użyłem total commander, usunąłem ten kod i teraz wyskakuje mi coś takiego na górze strony: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/tomek205/domains/podrozuj-i-zyj.pl/public_html/wp-content/themes/carniz/functions.php:1) in /home/tomek205/domains/podrozuj-i-zyj.pl/public_html/wp-content/themes/carniz/functions.php on line 19
Kod wygląda następująco:
<?php
if ( ( $pagenow == "themes.php" ) && current_user_can('administrator') && isset( $_GET['activated'] ) && ( $_GET['activated']=='true' ) ) {
if (!include_once( get_template_directory() . '/inc/activation.php' )) {
$stylesheet = get_option( 'theme_switched' );
switch_theme( $stylesheet, $stylesheet );
if ( file_exists( get_template_directory() . '/inc/activation.php' ) ) {
$error_message[]="PHP hasn't access to file /inc/activation.php. Check the file permissions and try again please.";
} else {
$error_message[]="File /inc/activation.php doesn't exists. Try to upload the theme again.";
}
$message="<h2>The theme wasn't activated by following reasons:</h2><ul><li>".implode("</li><li>",$error_message)."</li></ul>"."Your theme was switched back to ".$stylesheet.".";
wp_die($message,'',array('back_link'=>"/wp-admin/themes.php"));
}
}
if (!session_id()) { session_start(); }
if (!include_once (get_template_directory()."/inc/library.php") )wp_die("Cannot include file /inc/library.php.");
$settingsfile='settings';
$defparamsfile="defaults";
$default='global|slider|layout|seo|translations';
if ( function_exists('register_sidebar') ) {
$sidebar='default';
register_sidebar(array(
'name' => 'Right Sidebar',
'id' => 'right_sidebar',
'description' =>'The right sidebar widget area',
'before_widget' => '<div id="%1$s" class="widget %2$s"><div class="inner">',
'after_widget' => '</div></div>',
'before_title' => '<div class="caption"><h3>',
'after_title' => '</h3></div>'
Błąd musi być gdzieś na samym początku, bo tylko tutaj się ,,bawiłem". Sprawdziłem też rozwiązania na phpedia, ale czy mi się wydaje czy ja mam zupełnie inny początek kodu? Ma ktoś jakąś wskazówkę? Będę ogromnie wdzięczny za wszelką pomoc.
Michael2318
18.06.2014, 21:44:28
W kodzie używasz sesji, więc plik musi się zaczynać od wywołania jej.
Weź ten fragment:
przenieś wyżej i dodaj go zaraz pod tym:
<?php
A najlepiej to wrzuć ten kod od tłumaczenia gdzieś niżej, nie na samym początku.
thomek205
18.06.2014, 22:30:54
Dziękuje za odpowiedź. Zrobiłem tak i wszystko teraz wygląda:
<?php
if (!session_id()) { session_start(); }
if ( ( $pagenow == "themes.php" ) && current_user_can('administrator') && isset( $_GET['activated'] ) && ( $_GET['activated']=='true' ) ) {
if (!include_once( get_template_directory() . '/inc/activation.php' )) {
$stylesheet = get_option( 'theme_switched' );
switch_theme( $stylesheet, $stylesheet );
if ( file_exists( get_template_directory() . '/inc/activation.php' ) ) {
$error_message[]="PHP hasn't access to file /inc/activation.php. Check the file permissions and try again please.";
} else {
$error_message[]="File /inc/activation.php doesn't exists. Try to upload the theme again.";
}
$message="<h2>The theme wasn't activated by following reasons:</h2><ul><li>".implode("</li><li>",$error_message)."</li></ul>"."Your theme was switched back to ".$stylesheet.".";
wp_die($message,'',array('back_link'=>"/wp-admin/themes.php"));
}
}
if (!include_once (get_template_directory()."/inc/library.php") )wp_die("Cannot include file /inc/library.php.");
$settingsfile='settings';
$defparamsfile="defaults";
$default='global|slider|layout|seo|translations';
Efekt niestety jest taki (pewnie coś znowu przekręciłem), że znowu mi się nawet strona w wordpress i przeglądarce nie otwiera (muszę przez Total Commander) tylko komunikat taki co wcześniej, ale z końcówką ,,on line 2"
kpt_lucek
18.06.2014, 22:37:28
Pobierz, edytuj Notepad++ i zmień kodowanie na UTF-8 (BEZ BOOM)
thomek205
19.06.2014, 09:52:02
Zrobiłem tak, skopiowałem z Total Commander, w Notepad ustawiłem to kodowanie, skopiowałem z powrotem do Total Commander i niestety dalej to samo. Z tym, że teraz u góry strony mam 2 razy tę informację,, Warning session start..."
Turson
19.06.2014, 11:22:40
Jesteś pewien, że UTF-8 bez BOM zastosowałeś?
Po drugie, wklej to (zastąp)
}
upewnij się, że includowane pliki nie startują sesji po raz drugi
thomek205
19.06.2014, 17:36:42
Zastąpiłem, teraz wyskakuje ,,on line 3". ,,Bawiłem się" tylko tą częścią kodu
<?php
if (!session_id()) {
session_start();
}
if ( ( $pagenow == "themes.php" ) && current_user_can('administrator') && isset( $_GET['activated'] ) && ( $_GET['activated']=='true' ) ) {
if (!include_once( get_template_directory() . '/inc/activation.php' )) {
$stylesheet = get_option( 'theme_switched' );
switch_theme( $stylesheet, $stylesheet );
if ( file_exists( get_template_directory() . '/inc/activation.php' ) ) {
$error_message[]="PHP hasn't access to file /inc/activation.php. Check the file permissions and try again please.";
} else {
$error_message[]="File /inc/activation.php doesn't exists. Try to upload the theme again.";
}
$message="<h2>The theme wasn't activated by following reasons:</h2><ul><li>".implode("</li><li>",$error_message)."</li></ul>"."Your theme was switched back to ".$stylesheet.".";
wp_die($message,'',array('back_link'=>"/wp-admin/themes.php"));
}
}
if (!include_once (get_template_directory()."/inc/library.php") )wp_die("Cannot include file /inc/library.php.");
$settingsfile='settings';
$defparamsfile="defaults";
$default='global|slider|layout|seo|translations';
if ( function_exists('register_sidebar') ) {
$sidebar='default';
Jeśli tu wszystko wygląda ok, to ja już nie wiem o co może chodzić. Aczkolwiek czegoś nie rozumiem- jeśli zmieniam to kodowanie w Notepad na to bez boom, a potem żeby to wrzucić na serwer muszę znowu to skopiować do Total Commander to czy to kodowanie tak czy inaczej się nie zmienia? Bo jak już po wklejeniu biorę ,,opcje" to tam dalej jest tylko UTF-8.
EDIT:
Przepraszam za dwa posty pod sobą, ale sytuacja jest u mnie zupełnie dziwna. Ściągnąłem na dysk motyw, którego używam. Skopiowałem cały kod z pliku ,,functions" (nic go nie zmieniałem taki jaki był w orginale) do starego pliku ,,functions". Poprzedni kod, ze wszystkimi zmianami jakie mi polecaliscie usunąłem. Właśnie tego kodu uzywałem przez ostatnie pół roku do wczoraj kiedy przez przypadek cos pozmienialem. Najlepsze jest to, ze dalej mi pokazuje blad na stronie (konkretnie linia 19 czyli dalej ten fragment: if (!session_id()) { session_start(); } ) Próbowałem już go zapisać na różne sposoby i dalej to samo, jeśli dam go zaraz na początku to po prostu tam pokazuje błąd. W akcie desperacji nawet usunąłem ten fragment. Wówczas na górze strony nic się nie wyświetla, ale nie widać jej w całości (np. nie pokazują się ostatnio dodane posty). O dostępie do Wordpress też mogę zapomnieć. Ktoś spotkał się z czymś takim? Co mi pozostaje, wrzucenie nowego wordpress na serwer i zabawa ze wszystkim, czyli dostrojeniem motywu od początku?
snerf
20.06.2014, 09:28:16
Spróbuj użyć ob_start czyli prze-buforuj plik.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.