it-swarm-vi.tech

option_name trên cơ sở dữ liệu lưu trữ thông tin của tiện ích bắt đầu hiện tại trong thanh bên lối vào là gì?

option_name trên cơ sở dữ liệu lưu trữ thông tin của tiện ích bắt đầu hiện tại trong thanh bên lối vào là gì?

1
justjoe

Giải quyết. Những gì EAmann nói là đúng. Vấn đề là ở cấu hình của hệ thống widget trong WordPress. Đối với mọi tiện ích đa thể hiện như văn bản, Thông tin được lưu trữ trong một tên tùy chọn khác nhau trong đó giá trị của mọi tiện ích lưu trữ theo cách được tuần tự hóa.

Bí quyết là về cách chúng tôi lưu trữ thông tin của tiện ích văn bản nối tiếp đôi khi có các ký tự đặc biệt. Chúng ta phải sử dụng heredoc. Việc sử dụng heredoc là để tránh trường hợp khi một chuỗi phải chứa ['] và ["], vì cả hai không thể được sử dụng trên một dòng cùng nhau.

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

Bây giờ chúng ta có thể lưu trữ chúng trong cơ sở dữ liệu:

$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: Nếu chúng ta lưu trữ các widget đa thể thì chúng ta nên nhớ rằng các widget có cấu hình riêng. Ví dụ: tiện ích văn bản được lưu trữ trong 'widget bản'

PS: Đọc cách sử dụng heredoc trong PHP .

2
justjoe

Các widget bên được lưu trữ ở nhiều nơi trong cơ sở dữ liệu. Thành thật mà nói, tôi nghĩ rằng sẽ không thể có chủ đề của bạn tạo ra một thanh bên được điền trước, được bổ sung khi cài đặt lần đầu tiên.

Tuy nhiên , vẫn có một cách để thiết lập hiển thị tiện ích mặc định khi bạn cài đặt một chủ đề lần đầu tiên. Nếu bạn xem chủ đề TwentyTen mặc định, bạn sẽ thấy nó xác định danh sách các widget "mặc định" sẽ được tải nếu người dùng không có thanh bên động:

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

Mã này chặn mã cứng một tiện ích tìm kiếm, tiện ích lưu trữ và tiện ích meta. Khá cơ bản, nhưng điều đó có nghĩa là các blog mới sẽ luôn hiển thị một cái gì đó hữu ích trong thanh bên ngay cả khi chủ sở hữu chưa có cơ hội tùy chỉnh trang web.

Nếu bạn đang chụp để tạo "danh sách các tiện ích được cài đặt tự động khi chủ đề đăng ký lần đầu tiên" thì đây là cách an toàn nhất và thân thiện nhất để thực hiện.

2
EAMann