ugrás a tartalomhoz

Worldpress

wwwDani · 2013. Május. 19. (V), 13.23
Nemrég el kezdtem foglalkozni worldpres-szel, és olyan akadályba ütköztem, ami egyelőre leküzdhetetlen. Azaz ha üres véleményt akarok felvinni akkor nem hibaüzenetet generál hanem rossz fejlécet és meghal az oldal. A Chrome azt mondj 303-as IE 404-es, Mozilla kódolási , opera meg 500-as hibát dob ki. Már túl vagyok a beállítási, plugin ki-bekapcsolási mizériákon, újratelepítettem vagy 3-szor szüzen is bármilyen más megjelenéssel is ezt a helyzetet nem képes kezelni.
El kezdtem nézni a kódot és oda jutottam el hogy a wp_die() fügvény hivatott megállítani a futtatást és egy hibaoldalt generálni ha nincs adat a comment mezőben vagy nincsenek adatok az e-mail illetve név mezőkben.
azaz:
if ( get_option('require_name_email') && !$user->exists() ) {
	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
		wp_die( __('<strong>ERROR</strong>: please fill the required fields (name, email).') );
	elseif ( !is_email($comment_author_email))
		wp_die( __('<strong>ERROR</strong>: please enter a valid email address.') );
}

if ( '' == $comment_content )
	wp_die( __('<strong>ERROR</strong>: please type a comment.') );
a wp_die-nak meg 3 ága van:
function wp_die( $message = '', $title = '', $args = array() ) {
	if ( defined( 'DOING_AJAX' ) && DOING_AJAX )   
		$function = apply_filters( 'wp_die_ajax_handler', '_ajax_wp_die_handler' ); 
	elseif ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
		$function = apply_filters( 'wp_die_xmlrpc_handler', '_xmlrpc_wp_die_handler' );
	else
		$function = apply_filters( 'wp_die_handler', '_default_wp_die_handler' );

	call_user_func( $function, $message, $title, $args );
}
Én az utolsó else-re kerülök azaz a _default_wp_die_handle() függvény hajtódik végre

Ami hivatott egy panaszoldalt legyártani egy vissza gombbal azt hiszem.
De ekkor 500-as azzaz internal server error fejlécet gyárt hozzá az első 2 sorában:
function _default_wp_die_handler( $message, $title = '', $args = array() ) {
	$defaults = array( 'response' => 500 );
	$r = wp_parse_args($args, $defaults);
$r=wp_parse_args egy array merge alkalmaz a default is args között de mivel args nincs ( apply_filters( 'wp_die_xmlrpc_handler', '_xmlrpc_wp_die_handler' ); - nincs args paramétere) csak a default lesz benne , ami ugye 500-as.
pár sorral lejebb az $r["response"]-ból fejlécet gyárt
if ( ! did_action( 'admin_head' ) ) :
		if ( !headers_sent() ) {
			status_header( $r['response'] );
			nocache_headers();
de mivel az $r-ben az array_merge során nem volt más csak a $default aminek a "response" értéke 500 ekkor meghal.
A did_action( 'admin_head' )-t nem lehet elkerülni megpróbáltam újraindított böngészővel kiürített gyorsítótárral nem bejelentkezve adminként. Ugyanerre az ágra jön!

Kézenfekvő lenne ugye hogy a $default["response"]=200 legyen és probléma megoldva.
Működik is így!
De a kérdésem az volna főleg azok felé akik fejlesztőként ismerik a programot valamit elnézek, és valami beállítás vagy szerver probléma, vagy ez tényleg egy program hiba.
Mert nekem úgy tűnik, ha nincsenek kitöltve a hozzászólás mezők csak ez lehet a kimenet, ami oldalhibához vezet...

Előre is köszönöm, és elnézést a hosszú üzenet miatt!
 
1

Nem trollkodni akarok.

felyx · 2013. Május. 19. (V), 15.19
Nem trollkodni akarok, de WordPress nem WorldPress :).
2

Jó neked hogy ennyit tudtál

wwwDani · 2013. Május. 19. (V), 15.47
Jó neked hogy ennyit tudtál hozzáfűzni a dologhoz!
Biztosan értetted is miről van szó :D