File: //var/www/test.kaunokolegija.lt/kk_wp_content/plugins/brd/index.php
<?php
/*
Plugin Name: Custom Breadcrumbs
Description: A simple breadcrumb plugin with multisite language support, enable/disable option, and Gutenberg block.
Version: 1.1
Author: Salman Akber
*/
// Register admin menu
add_action('admin_menu', 'cfp_breadcrumbs_add_admin_menu');
function cfp_breadcrumbs_add_admin_menu() {
add_options_page(
'Breadcrumb Settings',
'Breadcrumbs',
'manage_options',
'cfp-breadcrumbs',
'cfp_breadcrumbs_options_page'
);
}
// Register settings
add_action('admin_init', 'cfp_breadcrumbs_settings_init');
function cfp_breadcrumbs_settings_init() {
register_setting('cfpBreadcrumbs', 'cfp_breadcrumbs_enabled');
add_settings_section(
'cfp_breadcrumbs_section',
__('Breadcrumb Settings', 'cfp'),
'__return_false',
'cfpBreadcrumbs'
);
add_settings_field(
'cfp_breadcrumbs_enabled',
__('Enable Breadcrumbs', 'cfp'),
'cfp_breadcrumbs_enabled_render',
'cfpBreadcrumbs',
'cfp_breadcrumbs_section'
);
}
function cfp_breadcrumbs_enabled_render() {
$enabled = get_option('cfp_breadcrumbs_enabled', '1');
?>
<input type='checkbox' name='cfp_breadcrumbs_enabled' value='1' <?php checked($enabled, '1'); ?> />
<?php
}
function cfp_breadcrumbs_options_page() {
?>
<div class="wrap">
<h1>Breadcrumb Settings</h1>
<form action='options.php' method='post'>
<?php
settings_fields('cfpBreadcrumbs');
do_settings_sections('cfpBreadcrumbs');
submit_button();
?>
</form>
</div>
<?php
}
function cfp_render_breadcrumbs() {
if (!get_option('cfp_breadcrumbs_enabled', '1')) { return ''; }
global $post;
// Get all menu locations
$locations = get_nav_menu_locations();
if ( empty( $locations ) ) {
return; // No menus set
}
// Get all menus
$menus = [];
foreach ( $locations as $location => $menu_id ) {
$menus[] = wp_get_nav_menu_items( $menu_id );
}
if ( empty( $menus ) ) {
return;
}
// Flatten menu items into a single array
$all_items = [];
foreach ( $menus as $menu_items ) {
if ( is_array( $menu_items ) ) {
foreach ( $menu_items as $item ) {
$all_items[ $item->ID ] = $item;
}
}
}
if ( empty( $all_items ) ) {
return;
}
// Find the current item in menus
$current_item = null;
foreach ( $all_items as $item ) {
if ( intval( $item->object_id ) === intval( $post->ID ) ) {
$current_item = $item;
break;
}
}
if ( ! $current_item ) {
return; // Page not in any menu
}
// Build breadcrumbs chain
$breadcrumbs = [];
while ( $current_item ) {
if ( strtolower( $current_item->title ) === 'home' ) {
break; // Skip duplicate home
}
$breadcrumbs[] = '<a href="' . esc_url( $current_item->url ) . '" style="font-weight: 200; color: #6d6b6d; text-decoration:none ;">' . esc_html( $current_item->title ) . '</a>';
$current_item = isset( $all_items[ $current_item->menu_item_parent ] ) ? $all_items[ $current_item->menu_item_parent ] : null;
}
$breadcrumbs = array_reverse( $breadcrumbs );
// Always prepend Home manually
array_unshift( $breadcrumbs, '<a href="' . home_url() . '" style="font-weight: 200; color: #6d6b6d; text-decoration:none ;">Home</a>' );
return '<nav class="cfp-breadcrumbs">' . implode( ' › ', $breadcrumbs ) . '</nav>';
}
// Shortcode
add_shortcode('cfp_breadcrumbs', function() {
return cfp_render_breadcrumbs();
});
// Optional: Auto inject before content
add_filter('the_content', function($content) {
if (is_singular() && get_option('cfp_breadcrumbs_enabled', '1')) {
// return cfp_render_breadcrumbs() . $content;
}
return $content;
});
add_action('init', 'cfp_register_breadcrumbs_block');
function cfp_register_breadcrumbs_block() {
wp_register_script(
'cfp-breadcrumbs-block',
plugins_url('block.js', __FILE__),
array('wp-blocks', 'wp-element', 'wp-editor'),
filemtime(plugin_dir_path(__FILE__) . 'block.js')
);
register_block_type('cfp/breadcrumbs', array(
'editor_script' => 'cfp-breadcrumbs-block',
'render_callback' => 'cfp_render_breadcrumbs',
));
}