php BSS到WordPress - 自动发布Bootstrap Studio导出到WordPress

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php BSS到WordPress - 自动发布Bootstrap Studio导出到WordPress相关的知识,希望对你有一定的参考价值。

#!/usr/local/bin/php
<?php
    /* This script automatically publishes BSS exports to WordPress.
          * Install Composer from https://getcomposer.org/ . Composer needs to be installed on your local computer where BSS is installed, NOT on the server.
          * Use Composer to install QueryPath (also on your local computer), following the instructions at https://github.com/technosophos/querypath
          * On the server, install the JSON Basic Authentication WordPress plugin from https://github.com/WP-API/Basic-Auth
          * Create an ini file in the bss_exports parent directory, containing values for base_url, wp_username, wp_password.
          * BSS automatically creates an assets folder in the export directory. This folder contains subfolders for css, images, js, etc... To automatically upload assets, provide ini values for ssh_username, ssh_host, ssh_path (file system path to your public web directory with no trailing slash)
          * In BSS, create a meta tag for each page you want to publish. <meta name="id" content="POST_ID" /> QP is CASE SENSITIVE, so you must use "id", NOT "ID". Replace POST_ID with the Post ID of the WordPress page. You can obtain this by editing the page in WordPress and viewing the ID in the URL.
          * The pages must already exist in WordPress before they can be updated by this script.
          * Configure BSS to run this script on export. BSS will automatically pass the path of the exported files as a parameter to this script.
          * For each exported page, the script will publish the content of body > div.container or body > div.container-fluid. Make sure the structure of the BSS page conforms to this structure, with the container div immediately following the body tag.
          * Apache does not allow Basic Authentication by default and will thrown 403 errors. To enable Basic Authenticaiton, add the following line to the .htaccess file in your WordPress web directory:
                SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
            You'll need to enable display of hidden files to make .htaccess visible so you can edit it.
          * If the script doesn't work, try running it from the command line. If you get a PHP "bad interpreter" error, it means some illegal character is interfering with the shebang, possibly a Windows CR/LF. Run the script through dos2unix (installed via brew) and make sure the permissions are 755.
    */
    require 'vendor/autoload.php';
    if (empty($argv[1])) {
      echo "Export path not specified. Aborting!\n";
      exit;
    }
    $path = $argv[1];
    $params = parse_ini_file("$path/../bss_to_wordpress.ini"); // ini file should be saved in the parent directory of bss_exports
    $files = scandir($path);
    foreach ($files as $file) {
        if (substr($file, -5) == '.html') {
            $qp = html5qp("$path/$file");
            if ($id = $qp->find("meta[name='id']")->attr('content')) { // Get the Post ID stored in the meta id tag. QP is CASE SENSITIVE, so you must use "id", NOT "ID"
                $content = str_replace('="assets', '="/assets', $qp->find("body > div.container,  body > div.container-fluid")->html5()); // Extract the main container content and replace relative references to the assets folder with absolute references
                $data = json_encode(['content' => $content]);
                $ch = curl_init($params['base_url'] . "/wp-json/wp/v2/pages/$id");
                curl_setopt($ch, CURLOPT_USERPWD, curl_escape($ch, $params['wp_username']) . ":" . $params['wp_password']);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_HTTPHEADER, [
                    'Content-Type: application/json',
                    'Content-Length: ' . strlen($data)
                ]);
                $response = curl_exec($ch);
            }
        }
    }
    shell_exec("rsync -av --delete --size-only '$path/assets' " . $params['ssh_username'] . '@' . $params['ssh_host'] . ':' . $params['ssh_path']); // Sync assets based on size only, deleting any files that don't exist locally
    shell_exec("rm -rf '$path/assets/'"); // Delete the assets directory structure, so the next export will be clean

以上是关于php BSS到WordPress - 自动发布Bootstrap Studio导出到WordPress的主要内容,如果未能解决你的问题,请参考以下文章

php 自动将Alt标签添加到WordPress图像上传

WordPress中怎么添加百度自动推送代码?创建完后上传到哪里?每个PHP模板

PHP WordPress Geo Mashup - 自动添加地图到帖子的插件

PHP 如何自动将搜索字段添加到导航菜单中| WordPress的

PHP wordpress - 从附加到帖子的图像自动创建Greybox图像集

将事件发布到 Facebook(来自 Wordpress / PHP)[关闭]