การเปลี่ยนค่าในฐานข้อมูล 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 แล้วสุ่มดูว่ามันสลับสีและไม่กำหนดความกว้างจริง ๆ มั๋ย
อ่านเพิ่มเติม
