Функция WP, дублирующая содержимое тела

Я пытаюсь вставить содержимое после <body> используя мой плагин, но код, который у меня есть, дублирует содержимое <body> .

Мой код находится в http://pastebin.com/rhDX8gsm (он довольно длинный), а демо-URL – http://bit.ly/1mRwyKY

 function somefunction() { if(!is_admin()){ global $something; if($something['switch-on'] == '1') { if($something['multipanel-on'] == '0' && $something['menu-on'] == '0'){ $insert .= '<div id="div1">something here</div>'; } if($something['multipanel-on'] == '1') { $insert .= '<div id="div2">'; $insert .= '<ul class="carousel_buttons">'; $insert .= '<li><a href="#" id="carousel_prev"></a></li>'; $insert .= '<li><a href="#" id="carousel_next"></a></li>'; $insert .= '</ul>'; $insert .= '</div>'; } if($something['menu-on'] == '1') { $insert .= '<div id="div3">'; $insert .= '<ul class="panel_list">'; $insert .= '<li>'; $insert .= '<a href="' . $url . '">'; $insert .= '<i '.$class1.'></i>'; $insert .= $menupost->post_title; $insert .= '</a>'; $insert .= '</li>'; $insert .= '</ul>'; $insert .= '</div>'; } $content = ob_get_clean(); $content .= preg_replace('#<body([^>]*)>#i',"<body$1>{$insert}",$content); echo $content; } } } 

Изменить: Изменено для использования действия wp_footer, но не для печати кода:

 add_action('wp_footer', 'somefunction',100); function somefunction() { if(!is_admin()){ global $something; if($something['switch-on'] == '1') { if($something['multipanel-on'] == '0' && $something['menu-on'] == '0'){ $insert .= '<div id="div1">something here</div>'; } if($something['multipanel-on'] == '1') { $insert .= '<div id="div2">'; $insert .= '<ul class="carousel_buttons">'; $insert .= '<li><a href="#" id="carousel_prev"></a></li>'; $insert .= '<li><a href="#" id="carousel_next"></a></li>'; $insert .= '</ul>'; $insert .= '</div>'; } if($something['menu-on'] == '1') { $insert .= '<div id="div3">'; $insert .= '<ul class="panel_list">'; $insert .= '<li>'; $insert .= '<a href="' . $url . '">'; $insert .= '<i '.$class1.'></i>'; $insert .= $menupost->post_title; $insert .= '</a>'; $insert .= '</li>'; $insert .= '</ul>'; $insert .= '</div>'; } return $insert; } } } 

Протестировано все if elses и они работают (отображение 0 или 1 при включении, так что подумайте, что это проблема с тем, что моя $ insert не отправляется в нижний колонтитул (в коде не отображается код), проверьте демонстрационную ссылку вверху, чтобы увидеть ,

Добавьте новое выражение фильтра сразу после <body> . Как и следующее

 <body <?php body_class(); ?>> <?php echo apply_filters("immediately_after_body","");?> 

Теперь в ваших functions.php добавьте фильтр-крючок, как это

 add_filter("immediately_after_body","my_function"); function my_function(){ //do your calculation return "<h1>output from Filter Hook</h1>"; } 

Вы можете увидеть результат сразу после <body> . Используйте фильтры, они были созданы для цели 🙂

Нашел вопрос, не был ли код, но фактический IF elses, я переместил панель, на которой он был построен от SMOF до Redux, но SMOF дает ввод 0, если установлен в x, но сокращение оставляет его пустым, поэтому я в основном проверял если вход был равен 0, и он терпел неудачу, следовательно, контент не отправляется.

совет для будущего, прочитайте документацию немного больше …. 🙂