Tento snippet umožňuje dynamické zobrazovanie položiek menu vo WordPress na základe používateľských rolí. Využíva Select2 pre moderný a užívateľsky prívetivý výber rolí. Po pridaní tohto kódu do súboru functions.php
vašej témy môžete jednoducho nastaviť viditeľnosť jednotlivých položiek menu pre rôzne používateľské roly.
Snippet zahŕňa:
Použitie:
functions.php
vašej WordPress témy.Tento snippet je ideálny pre webové stránky, ktoré potrebujú prispôsobiť navigáciu na základe rôznych používateľských rolí, a poskytuje elegantné riešenie s minimálnym úsilím.
Ak máte akékoľvek otázky alebo potrebujete ďalšie úpravy, neváhajte ma kontaktovať. Prajem vám veľa úspechov s vaším WordPress projektom!
// Pridať vlastné pole pre roly v položkách menu
function custom_enqueue_select2_assets() {
wp_enqueue_style('select2-css', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css');
wp_enqueue_script('select2-js', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js', array('jquery'), null, true);
}
add_action('admin_enqueue_scripts', 'custom_enqueue_select2_assets');
// Inicializácia Select2 pre multi-select pole
function custom_select2_init_script() {
?>
jQuery(document).ready(function($) {
$('#menu-to-edit .menu-item select[multiple]').select2().css('width', '100%');
});
roles;
?>
<label for="edit-menu-item-roles-">
<select name="menu-item-roles[][]" id="edit-menu-item-roles-" multiple class="select2" style="width: 100%;">
$role) : ?>
<option value="" >
<label for="edit-menu-item-exclude-roles-">
<select name="menu-item-exclude-roles[][]" id="edit-menu-item-exclude-roles-" multiple class="select2" style="width: 100%;">
$role) : ?>
<option value="" >
roles;
foreach ($items as $item) {
$item_roles = get_post_meta($item->ID, '_menu_item_roles', true);
$item_exclude_roles = get_post_meta($item->ID, '_menu_item_exclude_roles', true);
if ((empty($item_roles) || array_intersect($user_roles, $item_roles)) &&
(empty($item_exclude_roles) || !array_intersect($user_roles, $item_exclude_roles))) {
$filtered[] = $item;
}
}
return $filtered;
}
add_filter('wp_nav_menu_objects', 'custom_filter_nav_menu_items', 10, 2);
// Pridať vlastné CSS pre Select2
function custom_admin_styles() {
echo '
.select2-container {
width: 100% !important;
}
.select2-selection {
width: 100% !important;
}
.select2-container--default .select2-selection--multiple {
min-height: 38px; /* Adjust this value as needed */
}
';
}
add_action('admin_head', 'custom_admin_styles');
Neváhajte ma kontaktovať. Som tu pre vás, aby som odpovedal na vaše otázky a začal spolupracovať na vašom projekte.
Copyright © 2023. Všetky práva vyhradené