it-swarm.asia

geçerli başlangıç ​​widget'ının bilgilerini ön uç kenar çubuğunda depolayan veritabanında seçenek_adı nedir?

geçerli başlangıç ​​widget'ının bilgilerini ön uç kenar çubuğunda depolayan veritabanında seçenek_adı nedir?

1
justjoe

Çözüldü. EAmann'ın söylediği doğru. Sorun, WordPress'teki widget sisteminin yapılandırmasındadır. Metin gibi her çoklu örnek pencere aracı için, Bilgi, her pencere öğesinin değerinin serileştirilmiş şekilde depolandığı farklı bir seçenek adında saklanır.

İşin püf noktası, serileştirilmiş metin widget'ının bazen özel karakterleri olan bilgilerini nasıl sakladığımızla ilgilidir. Heredoc'u kullanmalıyız. Heredoc kullanımı, bir dizgenin ['] ve ["] içermesi gereken durumlardan kaçınmak içindir, çünkü ikisi bir arada bir arada kullanılamaz.

$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;

Şimdi onları veritabanında saklayabiliriz:

$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' ) );

Not: Çok örnekli widget'ları saklarsak, widget'ların kendi yapılandırmalarına sahip olduğunu hatırlamalıyız. Örneğin, metin widget'ı 'widget_text' içinde saklanır.

Not: PHP'de heredoc'un nasıl kullanıldığını okuyun .

2
justjoe

Kenar çubuğu widget'ları veritabanında birden çok yerde saklanır. Dürüst olmak gerekirse, temanızın ilk yüklendiğinde önceden doldurulmuş, pencere kenarına yerleştirilmiş bir kenar çubuğu oluşturmasının imkansız olacağını düşünüyorum.

Ancak , bir temayı ilk kez yüklediğinizde için varsayılan bir pencere öğesi ekranı kurmanın bir yolu var. Varsayılan TwentyTen temasına bakarsanız, kullanıcının dinamik bir kenar çubuğu yoksa yüklenecek "varsayılan" widget'ların bir listesini tanımladığını göreceksiniz:

<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 -->

Bu kod bloğu bir arama widget'ını, arşiv widget'ını ve meta widget'ını kodlar. Oldukça basit, ancak yeni blogların, sitenin henüz siteyi özelleştirme şansı olmasa bile, kenar çubuğunda her zaman yararlı bir şey göstereceği anlamına gelir.

"Bir tema ilk kez kaydedildiğinde otomatik olarak yüklenen bir widget listesi" oluşturmak için çekim yapıyorsanız, bunu yapmanın en güvenli ve en kolay yoludur.

2
EAMann