PHP работает на CMS стороне WordPress

У меня есть собственный пользовательский PHP, который создает короткий код. У меня должен быть какой-то странный код здесь, потому что он появляется на бэкэнде (редакции) WordPress. Я использую тему Divi и имею ее в текстовом модуле с классом «SearchBarArea». Итак, это имя DIV, в котором он должен находиться, но на переднем конце это НЕ в том, что DIV идет сразу после «entry-content». Есть идеи?

function searchbar_function() {//Creates shortcode [searchbar] $MainCategories = get_categories( array( 'orderby' => 'name', 'parent' => 0 ) );//Grabs just the parent categories ?> <form action="action_page.php"> <?php foreach ( $MainCategories as $MainCategory ) { $MainCatID=esc_html($MainCategory->term_id);//Gets Main Category ID if($MainCatID!=='1' && $MainCatID!=='153'){//Exclude Uncategorized or Featured from Main Category List $MainCatURL=esc_url( get_category_link( $MainCategory->term_id ) );//Gets Main Category URL $MainCatName=esc_html( $MainCategory->name );//Gets Main Category Name $MainCatSlug=esc_html( $MainCategory->slug );//Gets Main Category Slug $MainCatCount=esc_html( $MainCategory->category_count ); $MainCat='<label>'.$MainCatName.'</label>'; echo $MainCat; $MainCatCode='<option value="'.$MainCatSlug.'">ALL '.$MainCatName.'</option>';?> <select name="<?php echo $MainCatSlug?>-dropdown"> <option value=""><?php echo esc_attr_e( 'Select:', 'textdomain' ); ?></option> <?php echo $MainCatCode;//Makes Main Category first choice $categories = get_categories( array( 'child_of' => $MainCatID ) );//Number is the Main Category ID foreach ( $categories as $category ) { $SubCatValueName= esc_attr($category->category_nicename); $SubCatValue= esc_attr( '/category/archives/' . $category->category_nicename ); $SubCatName=esc_html( $category->cat_name ); $SubCatCount=esc_html( $category->category_count ); $SubCatOption ='<option value="'.$SubCatValueName.'">'.$SubCatName.'</option>'; echo $SubCatOption; } ?> </select> <?php } }?> <input type="submit" value="Search"> </form> <?php } add_shortcode( 'searchbar', 'searchbar_function' ); 

Solutions Collecting From Web of "PHP работает на CMS стороне WordPress"

Даже с отсутствующим открытым тегом php это не будет работать так, как вы пытаетесь это сделать. Модуль кода Divi принимает код html и короткие коды PHP. Я не пробовал javascript, поэтому не уверен в этом.

Вам нужно будет интегрировать ваш код в качестве автономного плагина. После этого вы можете использовать короткий код в модуле Divi-кода, а также сможете использовать его в режиме текстовых вкладок.

Я понял это. Я перестроил HTML и использовал переменные, чтобы не было разрыва кода. Я также удалил

 esc_attr_e( 'Select:', 'textdomain' ); 

Поскольку это заставляло результаты появляться вне DIV, был введен короткий код.

 function searchbar_function() {//Creates shortcode [searchbar] $MainCategories = get_categories( array( 'orderby' => 'name', 'parent' => 0 ) );//Grabs just the parent categories $CodeResult.='<form action="action_page.php">'; foreach ( $MainCategories as $MainCategory ) { $MainCatID=esc_html($MainCategory->term_id);//Gets Main Category ID if($MainCatID!=='1' && $MainCatID!=='153'){//Exclude Uncategorized or Featured from Main Category List $MainCatURL=esc_url( get_category_link( $MainCategory->term_id ) );//Gets Main Category URL $MainCatName=esc_html( $MainCategory->name );//Gets Main Category Name $MainCatSlug=esc_html( $MainCategory->slug );//Gets Main Category Slug $MainCatCount=esc_html( $MainCategory->category_count ); $MainCat='<label>'.$MainCatName.'</label>'; $MainCatCode='<option value="'.$MainCatSlug.'">ALL '.$MainCatName.'</option>'; $CodeResult.=$MainCat; $SelectCode='<select name="'.$MainCatSlug.'-dropdown"><option value="">Select:</option>'; $CodeResult.=$SelectCode; $CodeResult.=$MainCatCode;//Makes Main Category first choice $categories = get_categories( array( 'child_of' => $MainCatID ) );//Number is the Main Category ID foreach ( $categories as $category ) { $SubCatValueName= esc_attr($category->category_nicename); $SubCatValue= esc_attr( '/category/archives/' . $category->category_nicename ); $SubCatName=esc_html( $category->cat_name ); $SubCatCount=esc_html( $category->category_count ); $SubCatOption ='<option value="'.$SubCatValueName.'">'.$SubCatName.'</option>'; $CodeResult.=$SubCatOption; } $CodeResult.='</select>'; } } $SubmitEnd='<input type="submit" value="Search"> </form>'; $CodeResult.=$SubmitEnd; return $CodeResult; } add_shortcode( 'searchbar', 'searchbar_function' ); 

Используйте ob_start() перед запуском ваших кодов коротких кодов и сразу после того, как коды коротких кодов используют что-то вроде

 $my_clean_ob = ob_get_clean(); return $my_clean_ob; 

Надеюсь, поможет.