Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Invalid argument supplied for foreach()
Štítky: foreach, save_post, Warning, WooCommerce
Zvolené téma obsahuje celkem 4 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel Karlinho a poslední změna je stará 11 let, 12 měsíců.
-
AutorPříspěvky
-
27. dubna 2014 (21:53) #18516
Zdravím, na šabloně Diamond mi vypíše při editaci článku či menu tuto chybovou hlášku:
Warning: Invalid argument supplied for foreach() in /data/web/virtuals/60538/virtual/www/wp-content/themes/diamond/functions.php on line 1143 Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/60538/virtual/www/wp-content/themes/diamond/functions.php:1143) in /data/web/virtuals/60538/virtual/www/wp-admin/post.php on line 235 Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/60538/virtual/www/wp-content/themes/diamond/functions.php:1143) in /data/web/virtuals/60538/virtual/www/wp-includes/pluggable.php on line 1121Daný řádek 1443 odkazuje na:
add_action( 'save_post', 'save_woocommerce_attr_to_meta' ); function save_woocommerce_attr_to_meta( $post_id ) { // Get the attribute_names .. For each element get the index and the name of the attribute // Then use the index to get the corresponding submitted value from the attribute_values array. foreach ( $_REQUEST['attribute_names'] as $index => $value ) { update_post_meta( $post_id, $value, $_REQUEST['attribute_values'][$index] ); } }Co je na tom kódu chybného?
30. dubna 2014 (9:53) #18525Problém je v tom, že
$_REQUEST['attribute_names']nabývá nějakých hodnot pouze u produktů. A použitá funkce se spouští při ukládání každého typu příspěvku. Takže je potřeba tam přidat nějakou podmínku, buď na existenci proměnné nebo přímo kontrolu vlastního typu obsahu (produkt).Související téma je zde.
30. dubna 2014 (20:57) #18534Díky za objasnění, zkoušel jsem hledat, jestli s tím neměl někdo problém a šikovně to nevyřešil, jelikož to asi sám nezvládnu, a zarazilo mne, že na to nejspíš neupozorňuje nikdo, kdo to dělal podle stejného návodu: http://www.galalaly.me/index.php/2013/05/woocommerce-sort-by-custom-attributes/ nebo http://robustastudio.com/sort-woocommerce-products-custom-attributes/.
Jak to co nejjednodušeji vyřešit?
30. dubna 2014 (23:23) #18536Celou funkci pro cyklus
foreach ( $_REQUEST['attribute_names'] as $index => $value ) { update_post_meta( $post_id, $value, $_REQUEST['attribute_values'][$index] ); }bych asi zkusil obalit podmínkou
if ( isset( $_REQUEST['attribute_names'] ) && !empty( $_REQUEST['attribute_names'] ) ) { foreach ( $_REQUEST['attribute_names'] as $index => $value ) { update_post_meta( $post_id, $value, $_REQUEST['attribute_values'][$index] ); } }Netestováno. Ostatní uživatelé se s tím nemuseli vůbec setkat, pokud nemají na serveru zapnuté hlášení PHP chyb (error_reporting) nebo WP_DEBUG. Na ostré verzi webu se tato direktiva kvůli podobných chybám často vypíná…
1. května 2014 (18:45) #18540 -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.