Upgrade to Pro — share decks privately, control downloads, hide ads and more …

触れるけど壊れないWordPressの作り方

 触れるけど壊れないWordPressの作り方

「WordPressって、壊れやすいんでしょ?」
──その誤解、そろそろ解きませんか?

「管理画面が怖い」「お知らせしか更新できない」「制作会社に頼まないと修正できない」
そんな“あるある”な誤解を、現場の事例とともにひとつずつ解きほぐします。

運用者が安心して触れるための設計、ブロックテーマの活かし方、
そして“壊れない仕組み”をどう作るか──制作者と運用者、両方の視点から語る実践的なWordPress運用術。

WordPressをもっと活かしたい人も、運用に不安がある人も、このセッションで「触れるけど壊れない」WordPressの本当の姿に出会えるかもしれません。

Avatar for Masahiko Kawai

Masahiko Kawai

November 02, 2025
Tweet

More Decks by Masahiko Kawai

Other Decks in Technology

Transcript

  1. 16 ˔ͳͥɺͦ͏ͳ͍ͬͯΔͷ͔ʁ ɾ ϫʔΫϑϩʔͷ໰୊ σβΠϯˠHTMLԽˠWordPressԽ ɾ ΢ΣϒαΠ τ͸ͦ͏͍͏࡞ΓํΛ͢Δ΋ͷͩͱࢥ͍ͬͯΔ WordPressͰͷ੍࡞͕ϝΠϯͰͳ੍͍࡞ऀͷ৔߹ɺ WordPressͷ৽͍͠৘ใΛΩϟ

    ονΞοϓ͠ଓ͚Δͷ͸೉͍͠ ʢϒϩοΫΤσΟλɾϒϩοΫςʔϚʣ ɾ ӡ༻ऀʹյ͞Εͳ͍ͨΊͷ഑ྀ ฤूͯ͠΄͘͠ͳ͍ͱ͜Ζ͸WordPressͰ؅ཧ͠ͳ͍
  2. 24 ໰୊఺ ɾ ϨΠΞ΢ τ͢ΔͨΊʹ͸ଟগͷHTMLͷ஌͕ࣝඞཁ ɾ ߏ଄͕͔ͭΈͮΒ͍ ɾ CSSͷద༻ʹ͸ ίʔυϏϡʔ͕ඞཁ

    ɾ ίʔυϏϡʔΛ࢖༻͢Δͱ ϛε͠΍͍͢ ϏδϡΞϧʹ੾Γସ͑Δͱ Πϯσϯ τ͕Ϧηο τ͞Εͯ͠·ͬͨΓ มͳۭߦ͕ೖͬͯ ೖΕࢠߏ଄͕Θ͔Βͳ͘ͳΔ ʂ
  3. 35 操作ミスでシステムが壊れないための設定 ɾ Ϣʔβʔݖݶͷద੾ͳઃఆ ؅ཧऀ ฤूऀ ౤ߘऀ دߘऀ ઃఆɾ֎؍ ϓϥάΠϯͳͲ

    શͯઃఆՄೳ ʷ ʷ ʷ ݻఆϖʔδͷฤू શͯฤूՄೳ શͯฤूՄೳ ʷ ʷ ౤ߘͷฤू શͯฤूՄೳ શͯฤूՄೳ ࣗ෼ͷ࡞੒ͨ͠ هࣄͷΈ ࣗ෼ͷ࡞੒ͨ͠ هࣄͷΈ ౤ߘͷެ։ શͯެ։Մೳ શͯެ։Մೳ ࣗ෼ͷ࡞੒ͨ͠ هࣄͷΈ ʷ
  4. 39 ɾ ஫ҙ ʂ manage-options Λ༗ޮʹ͢Δͱɺ ଞͷϓϥάΠϯͷઃఆ΋ग़͖ͯͯ͠·͏ ʂ ɹɹɹ ɹɹˣ

    ɾ Admin Menu Editor ϓϥάΠϯͰ ෆཁͳϝχϡʔΛඇදࣔʹ͢Δ ACFͷઃఆ͸ ฤूऀʹ৮Βͤͨ͘ͳ͍ ʂ දࣔͨ͘͠ͳ͍߲໨ͷ ʮExtra capabilityʯʹࢦఆͨ͠ݖݶҎ্Ͱදࣔ αϒϝχϡʔʹ΋͢΂ͯࢦఆ͠ͳ͍ͱදࣔ͞Εͯ͠·͏
  5. 41 ɾ functions.php ·ͨ͸ ࣗ࡞ϓϥάΠϯʹԼهίʔυΛॻ͘ function allow_edit_privacypolicy( $caps, $cap, $user_id,

    $args ) { $user_meta = get_userdata( $user_id ); if ( ! $user_meta ) { return $caps; } if ( ʻmanage_privacy_options’ !== $cap ) { return $caps; } if ( ! array_intersect( [ ʻeditor’ , ʻadministrator’ ], $user_meta->roles ) ) { return $caps; } $manage_name = is_multisite() ? ʻmanage_network’ : ʻmanage_options’ ; $caps = array_diff( $caps, [ $manage_name ] ); return $caps; } add_action( ʻmap_meta_cap’ , ʻallow_edit_privacypolicy’ , 1, 4 );
  6. 42 ɾ ϒϩοΫςʔϚͷφϏήʔγϣϯ͸؅ཧऀ͔͠ฤूͰ͖ͳ͍ ɾ ΫϥγοΫςʔϚͰ͸ɺ֎؍ > ϝχϡʔ ͕ฤूऀݖݶͰฤूͰ͖͕ͨɺ ϒϩοΫςʔϚͰ͸ɺ֎؍ >

    ΤσΟλʔ > φϏήʔγϣϯ ʹ͋Γɺ ؅ཧऀҎ֎ʹ͸ϝχϡʔ͕ग़ͯ͜ͳ͍ ɹɹɹɹɹˣ ɾ ฤूऀʹφϏήʔγϣϯͷฤूݖݶΛ༩͑Δʢ࣍ϖʔδͷίʔυΛ࢖༻ʣ ɹɹɹɹɹˣ ɾ φϏήʔγϣϯΛඇެ։ͷݻఆϖʔδʹ഑ஔͯ͠ฤू͢Δ
  7. 43 ɾ functions.php ·ͨ͸ ࣗ࡞ϓϥάΠϯʹԼهίʔυΛॻ͘ add_filter( ʻregister_post_type_args’ , ʻmy_modify_wp_navigations_capabilities’ ,

    10, 2 ); function my_modify_wp_navigations_capabilities( $args, $post_type ) { if ( $post_type === ʻwp_navigation’ ) { $args[ ʻcapabilities’ ][ ʻedit_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻedit_others_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻdelete_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻpublish_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻread_private_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻdelete_private_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻdelete_published_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻdelete_others_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻedit_private_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻedit_published_posts’ ] = ʻedit_pages’ ; $args[ ʻcapabilities’ ][ ʻcreate_posts’ ] = ʻedit_pages’ ; } return $args; }
  8. 58 functions.php ·ͨ͸ ࣗ࡞ϓϥάΠϯʹԼهίʔυΛॻ͘ // ブロックスタイルを登録 function my_block_styles() { register_block_style(

    ʻcore/paragraph’ , // 段落ブロック array( ʻname’ => ʻred-marker’ , // 登録するスタイルのCSSクラス ʻlabel’ => __( ʻ赤マーカー’ , ʻtextdomain’ ), // ボタンのラベル ʻstyle_handle’ => ʻmy-block-style’ , // ブロックスタイルが記述されたCSSのハンドル ), ); } add_action( ʻinit’ , ʻmy_block_styles’ );
  9. 59 ɾ ɾ CSS (my-styles.css) // ブロックのスタイルを記述したCSSを読み込み(既存のCSSに記述してもOK) function enqueue_my_block_styles() {

    wp_enqueue_style( ʻmy-block-style’ , // ハンドル get_template_directory_uri() . ʻ/css/my-styles.css’ , array(), ʻ1.0’ ); } add_action( ʻwp_enqueue_scripts’ , ʻenqueue_my_block_styles’ ); add_action( ʻenqueue_block_editor_assets’ , ʻenqueue_my_block_styles’ ); p.is-style-red-marker { // クラス名は is-style-xxxx となる background-image: linear-gradient(transparent 70%, rgba(255, 0, 0, .4) 70%); }
  10. 62 ɾ ΧελϜϑΟʔϧυ͸ϦϏδϣϯ؅ཧͷର৅֎ ʂ ΧελϜϑΟʔϧυͷϦϏδϣϯΛ༗ޮʹ͢Δʹ͸ɺ functions.php ·ͨ͸ ࣗ࡞ϓϥάΠϯʹԼهίʔυΛॻ͘ function enable_revisions_customfield(

    $keys ) { $add_keys = array( ʻitem-color’ , // カスタムフィールドのキー ʻitem-size’ , // カスタムフィールドのキー ); $rev_keys = array_merge( $keys, $add_keys ); return $rev_keys; } add_filter( ʻwp_post_revision_meta_keys’ , ʻenable_revisions_customfield’ );
  11. 63 ࣗಈόοΫΞοϓ ɾ खಈͩͱઈରʹ๨ΕΔͷͰɺεέδϡʔϧόοΫΞοϓඞਢ ɾ ผͷαʔόʔʹόοΫΞοϓΛऔΔʢGoogleυϥΠϒɺDropboxͳͲʣ ΞΫγσϯ τͰαʔόʔʹΞΫηεͰ͖ͳ͘ͳΔ͜ͱ΋͋Δ ɾ ෮ݩͷ࿅शΛ͓ͯ͘͠

    ʮBack WPUpʯ͸ɺ෮ݩʹFTP΍σʔλϕʔεૢ࡞͕ඞཁ ʮUpdraftPlusʯʮWPvivid Backup & Migrationʯ͸ϘλϯΫϦοΫͰOK! ɾ ϨϯλϧαʔόʔͷࣗಈόοΫΞοϓαʔϏε΋׆༻Ͱ͖Δ