รักษาการตั้งค่าชุดรูปแบบในชุดรูปแบบลูก


10

ลูกค้าของฉันใช้ธีม Karma ด้วยการตั้งค่ามากมายในตัวเลือกชุดรูปแบบ ฉันต้องการเก็บ CSS และ PHP ของฉันไว้ในธีมลูกเพื่อให้การอัพเดตธีมไม่ลบล้าง อย่างไรก็ตามเมื่อฉันเลือกชุดรูปแบบลูกของฉันในลักษณะ> ชุดรูปแบบการตั้งค่าชุดรูปแบบหลักหายไปทั้งหมด

มีวิธีใดที่จะรักษาการตั้งค่าธีมหลักไว้หรือไม่?


คุณหมายถึงอะไรใน "หายไป"? หากคุณสามารถเปลี่ยนกลับไปเป็นธีมหลักและการตั้งค่าที่นั่นจะไม่หายไป
Mark Kaplun

หายไปจากแผงควบคุมและเว็บไซต์นั่นคือ พวกเขายังคงอยู่ที่ไหนสักแห่งในฐานข้อมูล แต่ที่ไม่เกี่ยวข้องกับปัญหาของฉัน
drake035

แล้วคุณมีปัญหาอะไร คุณถามว่า "มีวิธีใดที่จะรักษาการตั้งค่าชุดรูปแบบหลักหรือไม่" และเนื่องจากพวกเขายังอยู่ในฐานข้อมูลจึงได้รับการเก็บรักษาไว้
Mark Kaplun

"ดอง" ความหมายมีอยู่ในธีมลูก เมื่อสลับจากธีมหลักเป็นธีมย่อยฉันต้องการให้การตั้งค่าลูกเหมือนกับการตั้งค่าหลัก
drake035

จากนั้นก็คัดลอก ต้องยอมรับว่าฉันยังไม่เข้าใจว่าอะไรคือปัญหาที่คุณพยายามแก้ไข ดูเหมือนว่าคุณกำลังพยายามทำให้ชีวิตคุณยุ่งเหยิงหรือวิธีการทำธีมลูกผิดและคุณควรปรับเปลี่ยนธีมหลัก (หรืออาจเป็นเพราะธีมหลักไม่เหมาะที่จะใช้สำหรับธีมลูก)
Mark Kaplun

คำตอบ:


11

เนื่องจากวิธีการจัดเก็บชุดรูปแบบเหล่านี้ถูกจัดเก็บเป็นอาร์เรย์ในฐานข้อมูลจึงเป็นการยากที่จะคัดลอกไปด้วยการคัดลอกและวางใน phpmyadmin หรือชั้นเชิงที่คล้ายกัน

คำสั่งตัวเลือก WP CLIเป็นเพื่อนของคุณที่นี่ หากคุณไม่ได้ใช้ WP CLI แล้วลองดูสิ! นี่คือวิธีที่ฉันคัดลอกการตั้งค่าจากชุดรูปแบบหน้าร้านไปยังชุดรูปแบบชื่อ storefront-sqcdy-child:

# save the existing theme settings in json format in a temporary text file
wp option get theme_mods_storefront --format=json > theme_mods_storefront.txt

# load the saved settings into the child theme option record in the database
wp option update theme_mods_storefront-sqcdy-child --format=json < theme_mods_storefront.txt

# cleanup the temp file
rm -f theme_mods_storefront.txt

ในฐานะบรรทัดที่สองคุณควรใช้ไพพ์เช่นกันอัพเดตตัวเลือก wp theme_mods_storefront-sqcdy-child --format = json <theme_mods_storefront.txt
Gregor

ใช่ฉันคิดว่ามันเป็นวิธีที่ได้มาตรฐานมากกว่าที่จะทำ ...
squarecandy

สวัสดี squarecandy คุณพูดว่า "มันอาจเป็นเรื่องยากที่จะคัดลอกพวกเขาด้วยเพียงแค่คัดลอกและวาง" แต่การดำเนินการที่คุณแสดงดูเหมือนกับฉันเหมือนกัน ฉันผิดหรือเปล่า?
Marco Panichi

@MarcoPanichi - มันแตกต่างกันอย่างแน่นอนเพราะ WP CLI ทำสิ่งที่แปลกใหม่หลายอย่างที่คุณไม่เคยเห็นข้อมูล unserializing / re-serializing ในวิธีที่เหมาะสม หากคุณเพียงแค่คัดลอกค่าและลองเปลี่ยนสิ่งต่าง ๆ โดยตรงในฐานข้อมูลด้วยคำสั่ง MySQL หรือ phpmyadmin คุณอาจจะทำสิ่งต่าง ๆ ล้มเหลว
squarecandy

1
ดูwpengine.com/support/wordpress-serialized-data - ส่วน "ความขัดแย้งที่อาจเกิดขึ้น" สำหรับสาเหตุที่คุณไม่สามารถคัดลอกค่าที่เป็นอนุกรมและคาดว่าจะทำงานได้ 100% WP CLI ดูแลทั้งหมดนี้ให้คุณ
squarecandy

6

การแก้ไขชุดรูปแบบ Wordpress ถูกบันทึกไว้ในwp_optionsตารางฐานข้อมูลในtheme_mods_{themename}เขตข้อมูล คุณสามารถคัดลอกและเปลี่ยนชื่อโดยใช้ชื่อชุดรูปแบบลูกของคุณ


1
และเมื่อธีมหลักปรับปรุงและเพิ่มตัวเลือกใหม่คุณจะทำอย่างไร
Mark Kaplun

1
ตัวเลือกที่ดีกว่าคืออะไร @MarkKaplun? ฉันคิดว่านี่เป็นวิธีแก้ปัญหาที่ผู้ใช้ถาม
Eoin

1
@Eoin คำถามเพิ่มเติมที่ฉันอ่านเกี่ยวกับชุดรูปแบบของเด็กน้อยฉันชอบข้อ จำกัด ของมัน ดูเหมือนว่าการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ที่ไม่สำคัญในธีมผู้ปกครองคุณจะต้องประเมินรหัสธีมลูกอีกครั้ง หากสิ่งที่คุณทำคือ CSS มีปัญหาเล็กน้อย แต่จำเป็นต้องมีการประเมินค่าใหม่อย่างอื่น OP ที่นี่จะต้องตรวจสอบให้แน่ใจว่าเขาซิงค์ตัวเลือกกับธีมหลักในการอัพเกรดแต่ละครั้ง (ในกรณีที่มีการเพิ่มตัวเลือกใหม่ที่ไม่มีค่าเริ่มต้นว่าง) ฉันพบว่าตัวเองสนับสนุนการใช้ธีมลูกและใช้ git เพื่อแยก "แม่" และทำการรวมเมื่อมีการอัปเดต
Mark Kaplun

เมื่อคุณพูดให้เปลี่ยนชื่อโดยใช้ชื่อธีมลูกคุณหมายถึงชื่อใด ฉันไม่เข้าใจว่าจะรับชื่อชุดรูปแบบเด็กได้จากที่ใด

@fuddin ชื่อชุดรูปแบบเป็นชื่อของโฟลเดอร์ของชุดรูปแบบลูก; ตัวอย่างเช่น: การตั้งค่าชุดรูปแบบหลักถูกระบุโดย Option_name 'theme_mods_parent-theme-name'; การตั้งค่าชุดรูปแบบลูกสามารถระบุได้โดย option_name 'theme_mods_parent-theme-name-child' คุณสามารถทำการเลือกในฐานข้อมูลของคุณเพื่อให้เห็นได้อย่างชัดเจน:SELECT * FROM wp_options WHERE option_name LIKE "theme_mods_%"
Marco Panichi

1

ฉันจะแก้ไขโดยเพียงแค่การคัดลอกตัวเลือกในฐานข้อมูล

นี่คือขั้นตอนทีละขั้นตอน :

  1. ล็อกอิน phpMyAdmin ของคุณและเลือกฐานข้อมูลของ webiste
  2. สำรองฐานข้อมูล
  3. ดำเนินการแบบสอบถามนี้เพื่อให้มีมุมมองที่ชัดเจนของสถานการณ์: SELECT * FROM wp_options WHERE option_name LIKE "theme_mods_%"; คำแนะนำนี้จะส่งคืนแถวสำหรับทุกชุดรูปแบบที่คุณเปิดใช้งานบนเว็บไซต์ของคุณ
  4. แก้ไขแถวของการตั้งค่าธีมพาเรนต์ที่ระบุโดย option_name = theme_mods_parent-theme-name
  5. ที่นี่ในฟิลด์ option_value คุณมีการตั้งค่าธีมพาเรนต์ทั้งหมดในรูปแบบต่อเนื่อง คัดลอกพวกเขา; คุณสามารถใช้เครื่องมือ unserializeเพื่อดูเนื้อหาในรูปแบบที่เป็นมิตรกับมนุษย์
  6. กลับมาที่จุด 3 แต่ตอนนี้แก้ไขแถวของการตั้งค่าชุดรูปแบบลูก
  7. วางการตั้งค่าที่คุณคัดลอกมาก่อนในฟิลด์ option_value บันทึก

0

คุณสามารถทำสิ่งที่ธีมลูกของ Genesis รวมถึงบันทึกการตั้งค่าธีมเริ่มต้นเมื่อเปิดใช้งานและเปลี่ยนธีม:

//* Theme Setting Defaults
add_filter( 'genesis_theme_settings_defaults', 'child_theme_defaults' );
function child_theme_defaults( $defaults ) {

    $defaults['blog_cat_num']              = 6;
    $defaults['content_archive']           = 'full';
    $defaults['content_archive_limit']     = 150;
    $defaults['content_archive_thumbnail'] = 0;
    $defaults['image_alignment']           = '';
    $defaults['image_size']                = 'entry-image';
    $defaults['posts_nav']                 = 'prev-next';
    $defaults['site_layout']               = 'full-width-content';

    return $defaults;

}

//* Theme Setup
add_action( 'after_switch_theme', 'child_theme_setting_defaults' );
function child_theme_setting_defaults() {

    if( function_exists( 'genesis_update_settings' ) ) {

        genesis_update_settings( array(
            'blog_cat_num'              => 6,
            'content_archive'           => 'full',
            'content_archive_limit'     => 150,
            'content_archive_thumbnail' => 0,
            'image_alignment'           => '',
            'image_size'                => 'entry-image',
            'posts_nav'                 => 'prev-next',
            'site_layout'               => 'full-width-content',
        ) );

    } else {

        _genesis_update_settings( array(
            'blog_cat_num'              => 6,
            'content_archive'           => 'full',
            'content_archive_limit'     => 150,
            'content_archive_thumbnail' => 0,
            'image_alignment'           => '',
            'image_size'                => 'entry-image',
            'posts_nav'                 => 'prev-next',
            'site_layout'               => 'full-width-content',
        ) );

เห็นได้ชัดว่าคุณจะต้องแก้ไขรหัสนี้เพื่อให้สามารถทำงานกับฟังก์ชั่นชุดรูปแบบของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.