it-swarm-ko.tech

프론트 엔드 사이드 바에 현재 시작 위젯의 정보를 저장하는 데이터베이스의 option_name은 무엇입니까?

프론트 엔드 사이드 바에 현재 시작 위젯의 정보를 저장하는 데이터베이스의 option_name은 무엇입니까?

1
justjoe

해결 됐어. EAmann이 옳다고 말한 것은 맞습니다. 문제는 WordPress의 위젯 시스템 구성에 있습니다. 텍스트와 같은 모든 다중 인스턴스 위젯의 경우 정보는 모든 옵션의 이름에 저장되며 모든 위젯의 값은 직렬화 된 방식으로 저장됩니다.

속임수는 때로는 특수 문자가있는 일련의 텍스트 위젯 정보를 저장하는 방법입니다. 우리는 헤레독을 사용해야합니다. heredoc의 사용은 문자열에 [ ']와 [ "]가 있어야하는 상황을 피하기위한 것입니다. 왜냐하면 둘 모두 한 줄에 함께 사용할 수 없기 때문입니다.

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

이제 데이터베이스에 저장할 수 있습니다.

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

추신 : 다중 인스턴스 위젯을 저장하면 위젯이 자체 구성을 가지고 있음을 기억해야합니다. 예를 들어 텍스트 위젯은 'widget_text'에 저장됩니다.

추신 : PHP에서 heredoc 사용법을 읽으십시오 .

2
justjoe

사이드 바 위젯은 데이터베이스의 여러 위치에 저장됩니다. 솔직히 말하자면, 처음 테마를 설치할 때 미리 설정된 크기의 widgetized 사이드 바를 만드는 것이 불가능할 것입니다.

그러나 , 처음 테마를 설치할 때 기본 위젯 디스플레이를 설정하는 방법은 여전히 ​​있습니다. 기본 TwentyTen 테마를 살펴보면 사용자가 동적 사이드 바를 가지지 않으면로드 될 "기본"위젯 목록을 정의한다는 것을 알 수 있습니다 :

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

이 코드 블록은 검색 위젯, 아카이브 위젯 및 메타 위젯을 하드 코딩합니다. 아주 기본이지만 소유자가 아직 사이트를 사용자 정의 할 수있는 기회가 없더라도 새로운 블로그는 사이드 바에 항상 유용한 것을 보여줍니다.

"테마가 처음으로 등록 될 때 자동으로 설치된 위젯 목록"을 만들기 위해 촬영하는 경우 가장 안전하고 친숙한 방법입니다.

2
EAMann