it-swarm-id.com

apa itu option_name pada database yang menyimpan informasi widget inisiat saat ini di sidebar frontend?

apa itu option_name pada database yang menyimpan informasi widget inisiat saat ini di sidebar frontend?

1
justjoe

Terpecahkan. Apa yang dikatakan EAmann benar. Masalahnya ada pada konfigurasi sistem widget di WordPress. Untuk setiap widget multi-instance seperti teks, Informasi disimpan dalam nama opsi yang berbeda di mana nilai setiap widget menyimpan secara serial.

Triknya adalah tentang bagaimana kita menyimpan informasi widget teks bersambung yang terkadang memiliki karakter khusus. Kita harus menggunakan heredoc. Penggunaan heredoc adalah untuk menghindari situasi ketika sebuah string harus berisi ['] dan ["], karena keduanya tidak dapat digunakan pada satu baris bersamaan.

$serialize_sidebar_widgets = <<< EOD
a:7:{s:19:"wp_inactive_widgets";a:0:{}s:9:"sidebar-1";a:1:{i:0;s:6:"text-3";}s:9:"sidebar-2";a:0:{}s:9:"sidebar-3";a:0:{}s:9:"sidebar-4";a:0:{}s:9:"sidebar-5";a:0:{}s:13:"array_version";i:3;}
EOD;

$serialize_widgets_text = <<< EOD
a:3:{i:2;a:0:{}i:3;a:3:{s:5:"title";s:5:"hello";s:4:"text";s:21:"saya hellokankamu yah";s:6:"filter";b:0;}s:12:"_multiwidget";i:1;}
EOD;

Sekarang kita bisa menyimpannya di basis data:

$wpdb->update( $wpdb->options, array( 'option_value' => $serialize_sidebar_widgets ), array( 'option_name' => 'sidebars_widgets' ) );
$wpdb->update( $wpdb->options, array( 'option_value' => $serialize_widgets_text ), array( 'option_name' => 'widget_text' ) );

PS: Jika kita menyimpan widget multi-instance maka kita harus ingat bahwa widget memiliki konfigurasi sendiri. Misalnya, widget teks disimpan di 'widget_text'

PS: Baca cara menggunakan heredoc di PHP .

2
justjoe

Widget bilah samping disimpan di banyak tempat dalam basis data. Sejujurnya, saya pikir hampir tidak mungkin untuk membuat tema Anda membuat sidebar widget yang sudah diisi sebelumnya ketika pertama kali diinstal.

Namun , masih ada cara untuk mengatur tampilan widget default ketika Anda menginstal tema pertama kali. Jika Anda melihat tema TwentyTen default, Anda akan melihat bahwa itu mendefinisikan daftar widget "default" yang akan dimuat jika pengguna tidak memiliki sidebar dinamis:

<div id="primary" class="widget-area" role="complementary">
    <ul class="xoxo">
    <?php
        /* When we call the dynamic_sidebar() function, it'll spit out
         * the widgets for that widget area. If it instead returns false,
         * then the sidebar simply doesn't exist, so we'll hard-code in
         * some default sidebar stuff just in case.
         */
        if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>

            <li id="search" class="widget-container widget_search">
                <?php get_search_form(); ?>
            </li>

            <li id="archives" class="widget-container">
                <h3 class="widget-title"><?php _e( 'Archives', 'twentyten' ); ?></h3>
                <ul>
                    <?php wp_get_archives( 'type=monthly' ); ?>
                </ul>
            </li>

            <li id="meta" class="widget-container">
                <h3 class="widget-title"><?php _e( 'Meta', 'twentyten' ); ?></h3>
                <ul>
                    <?php wp_register(); ?>
                    <li><?php wp_loginout(); ?></li>
                    <?php wp_meta(); ?>
                </ul>
            </li>

    <?php endif; // end primary widget area ?>
    </ul>
</div><!-- #primary .widget-area -->

Kode ini memblokir hard-code widget pencarian, widget arsip, dan widget meta. Cukup mendasar, tetapi itu berarti blog baru akan selalu menampilkan sesuatu yang berguna di bilah sisi bahkan jika pemiliknya belum memiliki kesempatan untuk menyesuaikan situs.

Jika Anda memotret karena membuat "daftar widget yang dipasang secara otomatis saat tema mendaftar untuk pertama kali" maka ini adalah cara paling aman, dan paling ramah untuk melakukannya.

2
EAMann