সমস্ত সাইডবারের নাম তালিকাভুক্ত করবেন?


14

আমি এর মতো সমস্ত সাইডবারগুলি তালিকাভুক্ত করছি:

global $wp_registered_sidebars;

echo '<pre>';
print_r($wp_registered_sidebars); 
echo '</pre>'

সুতরাং আমি এরকম কিছু পাচ্ছি:

Array
(
    [sidebar-1] => Array
        (
            [name] => Sidebar #1
            [id] => sidebar-1
            [description] => Sidebar number 1
            [before_widget] => 
            [after_widget] => 
            [before_title] => 
            [after_title] =>
        )

 (...)

)

তবে আমি সেগুলি একটি নির্বাচিত তালিকা হিসাবে প্রদর্শন করতে চাই, যেমন:

<select>
  <option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
  <option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
(...)
</select>

ওয়ার্ডপ্রেস কোডেক্স মোটেই সহায়ক নয়।

ধন্যবাদ!


আপনি ঠিক কোথায় সাইডবারগুলি তালিকাভুক্ত করছেন এবং এটি কোন উদ্দেশ্যে কাজ করে?
কায়সার 13

উত্তর:


23

বিশ্বব্যাপী লুপ:

<select>
<?php foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) { ?>
     <option value="<?php echo ucwords( $sidebar['id'] ); ?>">
              <?php echo ucwords( $sidebar['name'] ); ?>
     </option>
<?php } ?>
</select>

দ্রষ্টব্য: ফাংশন শুধুমাত্র আছে এটা ঠিক প্রদর্শন করে যেমন আপনি জিজ্ঞাসা। আপনি সত্যই তা চান কিনা তা নিশ্চিত নন।
ucwords()


কীভাবে বিশ্বব্যাপী অ্যারে এবং অবজেক্টগুলি অ্যাক্সেস করবেন:

যাইহোক: আপনার প্রশ্নটি বেশিরভাগ ক্ষেত্রে অ্যারে অ্যাক্সেস করার বিষয়ে। আমি এ সম্পর্কে একটি প্রশ্ন লিখেছি (আরও ব্যাখ্যা জন্য)। এখানে একবার দেখুন।


6

আপনার জন্য তালিকা তৈরি করতে একটি ফাংশন লিখুন?

function sidebar_selectbox( $name = '', $current_value = false ) {
    global $wp_registered_sidebars;

    if ( empty( $wp_registered_sidebars ) )
        return;

    $name = empty( $name ) ? false : ' name="' . esc_attr( $name ) . '"';
    $current = $current_value ? esc_attr( $current_value ) : false;     
    $selected = '';
    ?>
    <select<?php echo $name; ?>>
    <?php foreach ( $wp_registered_sidebars as $sidebar ) : ?>
        <?php 
        if ( $current ) 
            $selected = selected( $current === $sidebar['id'], true, false ); ?>    
        <option value="<?php echo $sidebar['id']; ?>"<?php echo $selected; ?>><?php echo $sidebar['name']; ?></option>
    <?php endforeach; ?>
    </select>
    <?php
}

তারপরে সাইডবারগুলি সহ একটি নির্বাচনী তালিকা তৈরি করতে আপনার যেখানে প্রয়োজন সেখানে কেবল কল করুন, allyচ্ছিকভাবে কোনও নাম দিয়ে যাচ্ছেন, যেমন।

sidebar_selectbox();

অথবা

sidebar_selectbox( 'theme_sidebars' );

অতিরিক্তভাবে এবং aচ্ছিকভাবে, বর্তমানে নির্বাচিত মানটি পাস করুন ...

sidebar_selectbox( 'theme_sidebars', $var_holding_current );

আশা করি এইটি কাজ করবে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.