HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
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',
    ));
}