การเปลี่ยนค่าในฐานข้อมูล WordPress เพื่อเพิ่มหรือแก้ไข Class ให้เป็นแบบ Stripes (แถวสลับสี) ทั้งหมดนั้น สามารถทำได้โดยการใช้คำสั่ง SQL Update ร่วมกับฟังก์ชัน REPLACE
โครงสร้าง
โดยปกติ WordPress จะเก็บรูปแบบตารางใหม่ ๆ โดยจะมีรูปแบบคือ
- ไม่กำหนด options
<!– wp:table –>
<figure><table> - ไม่ fixed ความกว้าง column
<!– wp:table {“hasFixedLayout”:false} –>
<figure class=”wp-block-table”><table> - ไม่ fixed ความกว้าง column และสลับสี
<!– wp:table {“hasFixedLayout”:false,”className”:”is-style-stripes”} –>
<figure class=”wp-block-table is-style-stripes”><table>
จะเห็นว่าต่างกันตรง attributes ทำให้เขียน sql update ได้โดยใช้ regular expression ช่วยได้
สำหรับตรวจสอบผลลัพธ์ (SELECT Preview)
ดูผลกระทบก่อนโดยใช้ QUERY ว่าใช้ตามที่ต้องการมั๋ย
SELECT
ID,
post_title,
CONCAT_WS ('\n',
REGEXP_SUBSTR (post_content, '<!-- wp:table[^>]*-->') ,
REGEXP_SUBSTR (post_content, '<figure class="wp-block-table[^"]*">')) AS `original`,
CONCAT_WS ('\n',
'<!-- wp:table {"hasFixedLayout":false,"className":"is-style-stripes"} -->',
REGEXP_REPLACE (REGEXP_SUBSTR (post_content, '<figure class="wp-block-table[^"]*">') ,
'<figure class="wp-block-table (\\s+align (center|wide|full)) ?[^"]*">',
'<figure class="wp-block-table\\1 is-style-stripes">')) AS `modify`
FROM wp_posts
WHERE post_content LIKE '%<!-- wp:table%'
AND post_type IN ('post', 'page') LIMIT 5;
update script
UPDATE wp_posts
SET post_content = REGEXP_REPLACE (REGEXP_REPLACE (post_content, '<!-- wp:table[^>]*-->', '<!-- wp:table {"hasFixedLayout":false,"className":"is-style-stripes"} -->') ,
'<figure class="wp-block-table (\\s+align (center|wide|full)) ?[^"]*">',
'<figure class="wp-block-table\\1 is-style-stripes">') WHERE post_content LIKE '%<!-- wp:table%'
AND post_type IN ('post', 'page') ;
หลังจากนั้น search หาบทความที่มีตารางโดยใช้เงื่อนไข <!-- wp:table แล้วสุ่มดูว่ามันสลับสีและไม่กำหนดความกว้างจริง ๆ มั๋ย
อ่านเพิ่มเติม