Errore in WordPress MS wp-admin/includes/post.php con il generatore di shortcode

28 feb 2011, 21:38:20
Visualizzazioni: 1.7K
Voti: 0

Sto riscontrando un problema serio con WordPress 3.1 con Multi Site abilitato e il generatore di shortcode personalizzato del mio tema. Per qualche motivo, ottengo il seguente errore ogni volta che creo una nuova pagina/post/pagina di tipo post personalizzato, ecc. È specificamente un problema con i pulsanti radio e il tag 'name'. Quando viene rimosso, tutto funziona bene. Quando è impostato su una variabile, ottengo l'errore. Tuttavia, impostando la variabile su una costante (come del testo) fa sì che funzioni di nuovo.

Questo è l'errore che sto ricevendo; non ho idea di cosa significhi e cosa lo causi:

Warning: Invalid argument supplied for foreach() in /home/matthew/public_html/wp-admin/includes/post.php on line 197

Warning: Cannot modify header information - headers already sent by (output started at /home/matthew/public_html/wp-admin/includes/post.php:197) in /home/matthew/public_html/wp-includes/pluggable.php on line 897

Ecco il codice PHP (controlla la linea 892): http://pastebin.com/BNK7wE2W

Sono un po' scettico nel rilasciare troppe informazioni prima che il tema venga pubblicato, ma se è necessario l'accesso al pannello di amministrazione allora, se possibile, contattatemi.

Grazie in anticipo, Matthew.

0
Tutte le risposte alla domanda 2
6

Ho notato un problema nella tua clausola case per i pulsanti radio: nel tag <label>, usi $val, ma penso che intendessi $option['id'].

Non vedo come potrebbe essere correlato all'errore foreach che stai ottenendo, ma non farà male correggerlo.

La cosa strana è che l'errore reale proviene dal codice core: wp-admin/includes/post.php, riga 197. Sembra che tu stia passando dei meta dei post, ma non stai passando un array, come invece richiesto. Questo ti aiuta a restringere il campo?

28 feb 2011 22:42:27
Commenti

Non proprio. L'errore smette di verificarsi quando rimuovo il meta box Shortcode Generator, quindi sono abbastanza sicuro che sia quello. Lo Shortcode Generator non ha una funzione Post Save, quindi non dovrebbe passare nulla quando il post viene pubblicato. Quando rimuovi quella riga (892), anche l'errore smette di verificarsi. Il caso del radio button sembra non gradire $option['id'] e non so perché. Impostandolo su rand(0, 100) ha generato un errore completamente diverso.

Matthew Ruddy Matthew Ruddy
1 mar 2011 00:24:02

Ho sperimentato un po' con il codice. Rimuovere il 'if($option['std'] == $opt) { echo 'checked="checked"'; }' ha anche risolto l'errore. Sembra che Wordpress stia ottenendo tutti i radio button selezionati come parte di un array o qualcosa di simile.. O forse no; è solo un'ipotesi.

Matthew Ruddy Matthew Ruddy
1 mar 2011 00:38:27

Stai dicendo che se commenti la riga 892 (dove viene generato il tag <input> per un radio button), l'errore scompare?

Dougal Campbell Dougal Campbell
1 mar 2011 00:43:53

Sì. Sono riuscito a restringere ulteriormente il problema; rimuovendo il codice 'if($option['std'] == $opt) { echo 'checked="checked"'; }' risolve l'errore. Non riesco a capire perché succeda questo..

Matthew Ruddy Matthew Ruddy
1 mar 2011 01:06:42

Il codice su pastebin è scaduto...

Dougal Campbell Dougal Campbell
1 mar 2011 22:19:33

Ho risolto il problema. Aveva a che fare con due opzioni che avevano lo stesso nome e ID; un problema con $option['id']. Grazie comunque per il tuo aiuto.

Matthew Ruddy Matthew Ruddy
3 mar 2011 21:18:59
Mostra i restanti 1 commenti
1

Quando ottieni:

Avviso: Impossibile modificare le informazioni dell'intestazione - le intestazioni sono già state inviate da (output iniziato a...

Motivo e Soluzione: Di solito è dovuto alla presenza di spazi, nuove righe o altri caratteri indesiderati prima di un tag <?php di apertura o dopo un tag di chiusura ?>. Assicurati che non ce ne siano e salva il file come UTF-8 senza BOM.

28 feb 2011 22:42:41
Commenti

Non questa volta. L'output spurio proviene dal messaggio di avviso PHP generato in wp-admin/includes/post.php come ho descritto nella mia risposta.

Dougal Campbell Dougal Campbell
28 feb 2011 22:48:31