简体   繁体   中英

Wordpress external header and footer from another wordpress site

I have 2 wordpress websites on different sub domains. The first site1.mydomain.com and site2.mydomain.com

What I would like to do is have the header and footer from site1 shown on site2

I tried this plugin: https://wordpress.org/plugins/external-header-footer/ but I don't think it works.

Does anyone know of any other solutions to this?

Thanks in advance.

I accomplished this with wp_remote_get() , Transients , and DOMDocument .

An example:

 function get_site_html() {

   $transient = get_transient('site_html');

   if(false === $transient) {
     $site_url       = 'https://YOUR-SITE.com';
     $response       = wp_remote_get(esc_url_raw($site_url));
     $response_code  = wp_remote_retrieve_response_code($response);
     $response_body  = wp_remote_retrieve_body($response);
     $response_error = null;

     if(is_wp_error($response)) {
       $response_error = $response;
     } elseif(200 !== $response_code) {
       $response_error = new WP_Error('html-error', sprintf(__('Invalid response code while retrieving HTML (%d)'), $response_code));
     } elseif(empty($response_body)) {
       $response_error = new WP_Error('html-response', isset($response_body['error']) ? $response_body['error'] : __('Unknown error retrieving HTML.'));
     }

     if(is_wp_error($response_error)) {
       return $response_error->get_error_message();
     } else {
       set_transient('site_html', $response_body, DAY_IN_SECONDS);
     }
   }

   $transient = get_transient('site_html');

   return $transient;
 }

Once you have the full site's HTML saved in a transient you can then get/add/remove specific elements with DOMDocument.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM