En essayant de nombreuses boucles imbriquées et des méthodes pour construire ce bloc JavaScript, j'ai besoin d'aide d'experts. Je parcoure tous les 'menuitems' et ceux avec menu_item_parent 0 sont les meilleurs parents, le reste je construis des niveaux inférieurs.caractères manquants construction d'un objet JavaScript Boucles PHP
Comment puis-je ajouter ces deux caractères manquants sur ces boucles?
Il manque une virgule
,
après chaque
{'name' : '','url':'','subs':[
{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
]}
Fonction
function make_menu_object(){
$menu_name = 'sec_level';
$menu = wp_get_nav_menu_object($menu_name);
$menuitems = wp_get_nav_menu_items($menu->term_id, array('order' => 'DESC'));
$objpart=null;
$menuitems_count = count($menuitems);
$master_counter = 0;
foreach($menuitems as $item){
// get page id from using menu item object id
$id = get_post_meta($item->ID, '_menu_item_object_id', true);
// set up a page object to retrieve page data
$page = get_page($id);
$link = get_page_link($id);
// item does not have a parent so menu_item_parent equals 0 (false)
if ($item->menu_item_parent==0){
if($master_counter<>0){$objpart.=']},';}
$objpart .= <<<EOT
'$item->title' : {
'url':'',
'sections': [
EOT;
}else{
$counter=1;
$the_star=1;
$objpart .= <<<EOT
{'name' : '$item->title','url':'','subs': [
EOT;
$args = array('numberposts' => 4, 'offset'=> 0, 'post_type' => 'post', 'category' => $item->object_id);
$myposts = get_posts($args);
$the_count = count($myposts);
foreach($myposts as $post) {//subs output into js object
setup_postdata($post);
$the_empty_thumbnail = '/wp-content/uploads/2013/03/holder_img_menu.jpg';
$the_thumbnail = get_the_post_thumbnail($post->ID, 'thumbnail');
//$the_thumbnail_img = (!empty($the_thumbnail) ? the_post_thumbnail() : $the_empty_thumbnail);
$the_post_title = addslashes($post->post_title);
$objpart .= <<<EOT
{'_id:':'1','title': '','img': ''}
EOT;
if($counter<$the_count){$objpart .= ',';}
$counter++;
}
if($the_star==1||$the_star==$counter){$objpart .=']}';}else{$objpart .=',';}
$the_star++;
}
$master_counter++;
}
$objpart .=']}';
return '<pre>'.$objpart.'</pre>';
}
Courant de sortie
'Item 1' : {'url':'','sections': [
{'name' : '','url':'','subs':[
{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
]}
{'name' : '','url':'','subs': [
{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
]}
]},
'Item 2' : {
'url':'',
'sections': [
{'name' : '','url':'','subs': [
{'_id:':'1','title': '','img': ''}
]}]}
désiré Sortie
'Item 1' : {'url':'','sections': [
{'name' : '','url':'','subs':[
{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
]}
,
{'name' : '','url':'','subs': [
{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
,{'_id:':'1','title': '','img': ''}
]}
]},
'Item 2' : {
'url':'',
'sections': [
{'name' : '','url':'','subs': [
{'_id:':'1','title': '','img': ''}
]}]}
La sortie souhaitée n'est pas un objet js. Vous devriez faire l'objet en php puis utiliser json_encode pour le convertir en objet js. – Musa
Construire manuellement une chaîne JSON est une mauvaise idée. C'est lent, et il est sujet à l'erreur. Construisez votre objet en tant que tableau PHP, puis utilisez 'json_encode()' pour produire votre objet JSON. Votre code est trop complexe pour le recoder comme une réponse. Allez-y, et revenez avec une question si vous obtenez stuk. –
@MikeW Je l'ai eu à travailler presque. Il me manque une virgule dans les sections du tableau. Mise à jour Question maintenant – Codex73