{"id":1913,"date":"2025-06-10T17:41:50","date_gmt":"2025-06-10T09:41:50","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/wpcms\/wpdt\/1913.html"},"modified":"2025-06-14T11:42:18","modified_gmt":"2025-06-14T03:42:18","slug":"%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8github%e5%92%8c%e9%83%a8%e7%bd%b2%e5%b7%a5%e5%85%b7%e8%87%aa%e5%8a%a8%e9%83%a8%e7%bd%b2wordpress%e4%b8%bb%e9%a2%98%e7%9a%84%e6%9b%b4%e6%94%b9","status":"publish","type":"post","link":"https:\/\/www.zhaozhao123.cn\/wpcms\/post\/1913.html","title":{"rendered":"\u5982\u4f55\u4f7f\u7528GitHub\u548c\u90e8\u7f72\u5de5\u5177\u81ea\u52a8\u90e8\u7f72WordPress\u4e3b\u9898\u7684\u66f4\u6539"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<p class=\"my-0\">Bug&#32534;&#35793;&#29422;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#20351;&#29992;GitHub&#21644;&#37096;&#32626;&#24037;&#20855;&#65288;&#22914;Jekyll&#12289;Hugo&#25110;&#38745;&#24577;&#32593;&#31449;&#29983;&#25104;&#22120;&#65289;&#33258;&#21160;&#37096;&#32626;WordPress&#20027;&#39064;&#30340;&#26356;&#25913;&#65292;&#20320;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#21021;&#22987;&#21270;GitHub&#20179;&#24211;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#22312;&#26412;&#22320;&#35745;&#31639;&#26426;&#19978;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Git&#20179;&#24211;&#12290;\n<pre><code class=\"language-bash\">mkdir my-theme-repo\ncd my-theme-repo\ngit init<\/code><\/pre><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#20811;&#38534;&#36828;&#31243;&#20179;&#24211;&#21040;&#26412;&#22320;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#23558;&#20320;&#30340;WordPress&#20027;&#39064;&#19978;&#20256;&#21040;GitHub&#24182;&#23558;&#20854;&#28155;&#21152;&#20026;&#36828;&#31243;&#20179;&#24211;&#12290;\n<pre><code class=\"language-bash\">git remote add origin https:\/\/github.com\/yourusername\/my-theme.git\ngit pull origin main  # &#22914;&#26524;&#20320;&#30340;&#20027;&#39064;&#27809;&#26377;&#20027;&#20998;&#25903;&#65292;&#21487;&#20197;&#20351;&#29992; `master` &#26367;&#20195;<\/code><\/pre><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622;WordPress&#20027;&#39064;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#25171;&#24320;&#20320;&#30340;WordPress&#20027;&#39064;&#25991;&#20214;&#22841;&#20013;&#30340;<code>functions.php<\/code>&#25991;&#20214;&#12290;<\/li>\n<li>&#28155;&#21152;&#25110;&#20462;&#25913;&#20197;&#19979;&#20195;&#30721;&#26469;&#21551;&#29992;&#33258;&#21160;&#26356;&#26032;&#21151;&#33021;&#65306;\n<pre><code class=\"language-php\">\/\/ &#33258;&#21160;&#26356;&#26032;&#20027;&#39064;\nif ( ! function_exists( 'mytheme_auto_update' ) ) :\n require_once get_template_directory() . '\/inc\/auto-update.php';\nendif;<\/code><\/pre><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#33258;&#23450;&#20041;&#25554;&#20214;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>auto-update.php<\/code>&#30340;&#26032;&#25991;&#20214;&#12290;<\/li>\n<li>\n<p>&#22312;&#35813;&#25991;&#20214;&#20013;&#32534;&#20889;&#20197;&#19979;PHP&#20195;&#30721;&#26469;&#23454;&#29616;&#33258;&#21160;&#26356;&#26032;&#21151;&#33021;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n* @package My Theme\n*\/\n\nclass MyTheme_Auto_Update {\n public static $instance = null;\n\n private function __construct() {}\n\n public static function instance() {\n     if (!isset(self::$instance)) {\n         self::$instance = new self();\n     }\n     return self::$instance;\n }\n\n public function register_hooks() {\n     add_action('after_setup_theme', array($this, 'init_auto_update'));\n }\n\n public function init_auto_update() {\n     update_option('autoptimize_cache', false);\n     wp_register_script('mytheme-autoupdate', plugins_url('\/js\/update.js', __FILE__), array(), null, true);\n\n     wp_enqueue_script('mytheme-autoupdate');\n     wp_localize_script(\n         'mytheme-autoupdate',\n         'mytheme_autoupdate_options',\n         array(\n             'baseurl' =&gt; admin_url('admin-ajax.php'),\n         )\n     );\n\n     add_action('wp_ajax_nopriv_mytheme_autoupdate', array($this, 'ajax_update_check'));\n     add_action('wp_ajax_mytheme_autoupdate', array($this, 'ajax_update_check'));\n\n     add_filter('template_include', array($this, 'load_new_version'), 9999);\n }\n\n public function ajax_update_check() {\n     $version = file_get_contents(get_stylesheet_directory() . '\/style.css');\n\n     if ($version != get_option('mytheme_latest_version')) {\n         echo json_encode(array('status' =&gt; 'update_available', 'message' =&gt; __('A newer version is available.', 'mytheme')));\n         wp_die();\n     } else {\n         echo json_encode(array('status' =&gt; 'no_update', 'message' =&gt; __('No updates available.', 'mytheme')));\n         wp_die();\n     }\n }\n\n public function load_new_version($template) {\n     $latest_version = get_option('mytheme_latest_version');\n     $newest_version = file_get_contents(get_stylesheet_directory() . '\/style.css');\n\n     if ($latest_version &lt; $newest_version) {\n         wp_redirect(home_url());\n     }\n\n     return $template;\n }\n}\n\nMyTheme_Auto_Update::instance()-&gt;register_hooks();\n<\/code><\/pre>\n<\/li>\n<li>&#36825;&#20010;&#25554;&#20214;&#20250;&#22312;&#27599;&#27425;&#29992;&#25143;&#35775;&#38382;&#26102;&#26816;&#26597;&#26159;&#21542;&#26377;&#26032;&#29256;&#26412;&#21487;&#29992;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797;&#33258;&#21160;&#26356;&#26032;&#21151;&#33021;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#30830;&#20445;&#20320;&#30340;WordPress&#20027;&#39064;&#30446;&#24405;&#32467;&#26500;&#27491;&#30830;&#65292;&#24182;&#19988;&#25152;&#26377;&#30456;&#20851;&#25991;&#20214;&#37117;&#22312;&#27491;&#30830;&#30340;&#36335;&#24452;&#19979;&#12290;<\/li>\n<li>&#27983;&#35272;&#22120;&#25171;&#24320;&#20320;&#30340;WordPress&#31449;&#28857;&#65292;&#28982;&#21518;&#21047;&#26032;&#39029;&#38754;&#26597;&#30475;&#26159;&#21542;&#33021;&#33258;&#21160;&#21152;&#36733;&#26032;&#29256;&#26412;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#37096;&#32626;&#21040;GitHub Pages<\/strong>&#65306;<\/p>\n<ul>\n<li>&#20351;&#29992;&#37096;&#32626;&#24037;&#20855;&#65288;&#22914;GitHub Actions&#12289;Netlify&#31561;&#65289;&#37096;&#32626;&#20320;&#30340;GitHub&#20179;&#24211;&#21040;GitHub Pages&#12290;<\/li>\n<li>&#35774;&#32622;&#37096;&#32626;&#33050;&#26412;&#65292;&#30830;&#20445;&#27599;&#27425;&#25512;&#36865;&#26102;&#37117;&#33021;&#33258;&#21160;&#37096;&#32626;&#26368;&#26032;&#30340;&#20027;&#39064;&#12290;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;GitHub&#21644;&#37096;&#32626;&#24037;&#20855;&#26469;&#33258;&#21160;&#31649;&#29702;WordPress&#20027;&#39064;&#30340;&#26356;&#26032;&#65292;&#20174;&#32780;&#20445;&#25345;&#20320;&#30340;&#32593;&#31449;&#22987;&#32456;&#26368;&#26032;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;&#21069;&#30340;Bug&#35821;&#27861;&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<p class=\"my-0\">&#40657;&#26495;&#21069;&#30340;Bug&#35821;&#27861;&#35762;&#24072;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<h3>1. &#23433;&#35013;GitHub<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013;&#19968;&#20010;GitHub&#23458;&#25143;&#31471;&#25110;API&#23494;&#38053;&#65292;&#20197;&#20415;&#36890;&#36807;&#23427;&#19982;GitHub&#26381;&#21153;&#22120;&#24314;&#31435;&#36830;&#25509;&#24182;&#33719;&#21462;&#20449;&#24687;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;&#65306;<\/h4>\n<pre><code class=\"language-bash\">curl https:\/\/api.github.com\/user\/repos | jq '.[].name' &gt; wordpress-repo-name.txt<\/code><\/pre>\n<h4>&#35299;&#37322;&#65306;<\/h4>\n<p>&#27492;&#21629;&#20196;&#20351;&#29992;<code>curl<\/code>&#21644;<code>jq<\/code>&#65288;&#22522;&#20110;Perl&#65289;&#26469;&#20174;GitHub API&#33719;&#21462;&#29992;&#25143;&#30340;&#25152;&#26377;&#20179;&#24211;&#21015;&#34920;&#12290;&#28982;&#21518;&#65292;&#23427;&#23558;&#36825;&#20123;&#21517;&#31216;&#23384;&#20648;&#22312;&#19968;&#20010;&#25991;&#26412;&#25991;&#20214;&#20013;&#65292;&#21517;&#20026;<code>wordpress-repo-name.txt<\/code>&#12290;<\/p>\n<h3>2. &#21019;&#24314;&#24182;&#25552;&#20132;&#21464;&#26356;<\/h3>\n<p>&#19968;&#26086;&#20320;&#26377;&#20102;&#19968;&#20010;&#26032;&#30340;WordPress&#20027;&#39064;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#20179;&#24211;&#24182;&#23558;&#35813;&#20027;&#39064;&#25512;&#36865;&#21040;GitHub&#19978;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#25805;&#20316;&#30340;&#27493;&#39588;&#65306;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;&#65306;<\/h4>\n<pre><code class=\"language-bash\">git init\ngit add . # &#23558;&#24403;&#21069;&#30446;&#24405;&#19979;&#30340;&#25152;&#26377;&#25991;&#20214;&#28155;&#21152;&#21040;&#26242;&#23384;&#21306;\ngit commit -m \"Initial commit\"\ngit push origin master<\/code><\/pre>\n<h4>&#35299;&#37322;&#65306;<\/h4>\n<ul>\n<li><code>git init<\/code>: &#21021;&#22987;&#21270;&#19968;&#20010;&#26032;&#30340;Git&#20179;&#24211;&#12290;<\/li>\n<li><code>git add .<\/code>: &#23558;&#24403;&#21069;&#30446;&#24405;&#19979;&#25152;&#26377;&#30340;&#25991;&#20214;&#37117;&#28155;&#21152;&#21040;&#26242;&#23384;&#21306;&#12290;<\/li>\n<li><code>git commit -m \"Initial commit\"<\/code>: &#36825;&#37324;&#65292;&ldquo;Initial commit&rdquo;&#26159;&#20320;&#24819;&#35201;&#30340;&#20027;&#39064;&#30340;&#31616;&#30701;&#25551;&#36848;&#12290;<\/li>\n<li><code>git push origin master<\/code>: &#23558;&#26412;&#22320;&#20179;&#24211;&#30340;&#20869;&#23481;&#25512;&#36865;&#21040;&#36828;&#31243;GitHub&#20179;&#24211;&#20013;&#30340;master&#20998;&#25903;&#12290;<\/li>\n<\/ul>\n<h3>3. &#20351;&#29992;GitHub Actions&#37096;&#32626;WordPress<\/h3>\n<p>&#29616;&#22312;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;GitHub Actions&#26469;&#33258;&#21160;&#21270;WordPress&#30340;&#37096;&#32626;&#36807;&#31243;&#12290;GitHub Actions&#20801;&#35768;&#20320;&#20351;&#29992;CI\/CD&#24037;&#20855;&#25191;&#34892;&#19968;&#31995;&#21015;&#30340;&#20219;&#21153;&#65292;&#22914;&#26500;&#24314;&#12289;&#27979;&#35797;&#21644;&#37096;&#32626;&#24212;&#29992;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;&#65306;<\/h4>\n<pre><code class=\"language-yaml\">on:\n  push:\n    branches:\n      - master\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions\/checkout@v2\n      - name: Install dependencies\n        run: npm install\n      - name: Build WordPress theme\n        run: npm run build\n      - name: Deploy to GitHub Pages\n        uses: actions\/upload-artifact@v2\n        with:\n          name: wordpress-theme\n          path: .\/build<\/code><\/pre>\n<h4>&#35299;&#37322;&#65306;<\/h4>\n<ul>\n<li><code>on: push<\/code>: &#24403;push&#20107;&#20214;&#21457;&#29983;&#26102;&#35302;&#21457;&#27492;&#21160;&#20316;&#12290;<\/li>\n<li><code>branches: master<\/code>: &#26816;&#26597;&#26159;&#21542;&#20026;<code>master<\/code>&#20998;&#25903;&#12290;<\/li>\n<li><code>steps:<\/code>&#65306;&#21015;&#20986;&#35201;&#25191;&#34892;&#30340;&#27493;&#39588;&#12290;\n<ul>\n<li><code>- name: Checkout code<\/code>: &#19979;&#36733;&#20179;&#24211;&#12290;<\/li>\n<li><code>- name: Install dependencies<\/code>: &#23433;&#35013;&#20381;&#36182;&#39033;&#12290;<\/li>\n<li><code>- name: Build WordPress theme<\/code>: &#26500;&#24314;&#20027;&#39064;&#12290;<\/li>\n<li><code>- name: Deploy to GitHub Pages<\/code>: &#23558;&#26500;&#24314;&#21518;&#30340;&#20027;&#39064;&#19978;&#20256;&#21040;GitHub Pages&#12290;<\/li>\n<\/ul><\/li>\n<\/ul>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#20197;&#19978;&#23637;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992;GitHub&#21644;GitHub Actions&#33258;&#21160;&#37096;&#32626;WordPress&#20027;&#39064;&#30340;&#26356;&#25913;&#12290;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#20320;&#21487;&#20197;&#26356;&#36731;&#26494;&#22320;&#31649;&#29702;&#20027;&#39064;&#30340;&#29256;&#26412;&#25511;&#21046;&#21644;&#21457;&#24067;&#27969;&#31243;&#65292;&#21516;&#26102;&#30830;&#20445;&#27599;&#27425;&#26356;&#26032;&#37117;&#33021;&#33258;&#21160;&#37096;&#32626;&#21040;&#29983;&#20135;&#29615;&#22659;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#35201;&#20351;&#29992;GitHub&#21644;&#37096;&#32626;&#24037;&#20855;&#65288;&#22914;Jekyll&#12289;Hugo&#25110;&#38745;&#24577;&#038;#32..<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[3189,52,53],"tuisongtax":[],"class_list":["post-1913","post","type-post","status-publish","format-standard","hentry","category-wpdt","tag-zt","tag-ztjc","tag-ztmbpzjc"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/posts\/1913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/comments?post=1913"}],"version-history":[{"count":0,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/posts\/1913\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/media?parent=1913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/categories?post=1913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/tags?post=1913"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/tuisongtax?post=1913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}