В общем, вдруг кому понадобится:
1. В
funtions.php добавляем это: (+ здесь я закомментировал кусок кода, который выводит весь список зарегистрированных сайдбаров, а в замен вывел список сайдбаров вручную - мне так нужно было..а вы уж сами смотрите..поэтому выкладываю весь код)
/**
* Register meta boxes.
*/
function hcf_register_meta_boxes() {
add_meta_box( 'hcf-1', __( 'Сайдбар для данной записи', 'hcf' ), 'wporg_custom_box_html', 'post', 'side' );
}
add_action( 'add_meta_boxes', 'hcf_register_meta_boxes' );
function wporg_custom_box_html($post)
{
$value = get_post_meta($post->ID, '_wporg_meta_key', true);
/* format setting outer wrapper */
echo '<div class="format-setting type-sidebar-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
/* description */
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
/* format setting inner wrapper */
echo '<div class="format-setting-inner">';
/* build page select */
echo '<label for="clinics_sidebar">Выберите Сайдбар</label><select name="clinics_sidebar" id="clinics_sidebar" class="components-select-control__input">';
// Кастомный список
echo '<option value="">-- ' . __( 'Выберите сайдбар', 'dart' ) . ' --</option>';
echo '<option value="sidebar-1" id="sidebar-1"' . selected($value, 'sidebar-1') . '>' . __( 'Сайдбар #1', 'dart' ) . '</option>';
echo '<option value="sidebar-2" id="sidebar-2"' . selected($value, 'sidebar-2') . '>' . __( 'Сайдбар #2', 'dart' ) . '</option>';
echo '<option value="sidebar-3" id="sidebar-3"' . selected($value, 'sidebar-3') . '>' . __( 'Сайдбар #3', 'dart' ) . '</option>';
echo '<option value="sidebar-4" id="sidebar-4"' . selected($value, 'sidebar-4') . '>' . __( 'Сайдбар #4', 'dart' ) . '</option>';
echo '<option value="sidebar-5" id="sidebar-5"' . selected($value, 'sidebar-5') . '>' . __( 'Сайдбар #5', 'dart' ) . '</option>';
echo '<option value="sidebar-6" id="sidebar-6"' . selected($value, 'sidebar-6') . '>' . __( 'Сайдбар #6', 'dart' ) . '</option>';
echo '<option value="sidebar-7" id="sidebar-7"' . selected($value, 'sidebar-7') . '>' . __( 'Сайдбар #7', 'dart' ) . '</option>';
echo '<option value="sidebar-8" id="sidebar-8"' . selected($value, 'sidebar-8') . '>' . __( 'Сайдбар #8', 'dart' ) . '</option>';
echo '<option value="no-sidebar" id="no-sidebar"' . selected($value, 'no-sidebar') . '>' . __( 'Без сайдбара', 'dart' ) . '</option>';
// Кастомный список
// /* get the registered sidebars */
// global $wp_registered_sidebars;
// $sidebars = array();
// foreach( $wp_registered_sidebars as $id=>$sidebar ) {
// $sidebars[ $id ] = $sidebar[ 'name' ];
// }
// /* filters to restrict which sidebars are allowed to be selected, for example we can restrict footer sidebars to be selectable on a blog page */
// $sidebars = apply_filters( 'recognized_sidebars', $sidebars );
// $sidebars = apply_filters( 'recognized_sidebars_' . $field_id, $sidebars );
// /* has sidebars */
// if ( count( $sidebars ) ) {
// echo '<option value="">-- ' . __( 'Выберите сайдбар', 'dart' ) . ' --</option>';
// foreach ( $sidebars as $id => $sidebar ) {
// echo '<option value="' . esc_attr( $id ) . '"' . selected( $value, $id, false ) . '>' . esc_attr( $sidebar ) . '</option>';
// }
// } else {
// echo '<option value="">' . __( 'No Sidebars', 'dart' ) . '</option>';
// }
echo '</select>';
echo '</div>';
echo '</div>';
?>
<?php
}
function wporg_save_postdata($post_id)
{
if (array_key_exists('clinics_sidebar', $_POST)) {
update_post_meta(
$post_id,
'_wporg_meta_key',
$_POST['clinics_sidebar']
);
}
}
add_action('save_post', 'wporg_save_postdata');
Теперь у вас на странице публикации записи в колонке справа появился блок "
Сайдбар для данной записи"
И теперь, в шаблоне страницы записи - -
single.php выводим следующий код:
<?php
$custom_sidebar = esc_attr( get_post_meta( get_the_ID(), '_wporg_meta_key', true ) );
if($custom_sidebar == 'sidebar-1'){
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-1'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-2') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-2'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-3') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-3'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-4') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-4'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-5') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-5'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-6') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-6'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-7') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-7'); ?>
</div>
</nav>
<?php
} elseif ($custom_sidebar == 'sidebar-8') {
?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('sidebar-8'); ?>
</div>
</nav>
<?php } else { ?>
<nav id="sidebar" class="course">
<div>
<?php if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('news-sidebar'); ?>
</div>
</nav>
<?php
}?>
У меня это идеально работает, может и вам поможет)
P.S
yarovikov Тебе отдельное спасибо, в правильную сторону направил)