diff --git a/eth-escape-headspace.php b/eth-escape-headspace.php index edb9945bc2fcb9b539ebbaa2dae8f1bb2a1f4ee7..a16f4b6128f6220b84db0e8d5f8da90206ed43fa 100644 --- a/eth-escape-headspace.php +++ b/eth-escape-headspace.php @@ -45,6 +45,14 @@ class ETH_Escape_HeadSpace2 { private $hs_string_keys = array( '_headspace_description', '_headspace_metakey', + '_headspace_page_title', + '_headspace_raw', + '_headspace_raw_footer', + ); + + private $hs_array_keys = array( + '_headspace_scripts', + '_headspace_stylesheets', ); private $hs_robots_keys = array( @@ -81,6 +89,7 @@ class ETH_Escape_HeadSpace2 { // Check for HS data $hs_data = array(); + // Keys that only exist once per post foreach ( array_merge( $this->hs_string_keys, $this->hs_robots_keys ) as $hs_key ) { $value = get_post_meta( get_the_ID(), $hs_key, true ); @@ -89,6 +98,15 @@ class ETH_Escape_HeadSpace2 { } } + // Keys that can exist multiple times per post + foreach ( $this->hs_array_keys as $hs_key ) { + $values = get_post_meta( get_the_ID(), $hs_key, false ); + + if ( ! empty( $values ) ) { + $hs_data[ $hs_key ] = $values; + } + } + // Bail if no HS data exists for this post if ( empty( $hs_data ) ) { return; @@ -98,11 +116,25 @@ class ETH_Escape_HeadSpace2 { echo "\n<!-- Escape HeadSpace2 by Erick Hitter; ethitter.com -->\n"; // Handle basic, string-containing keys + $output = array(); + foreach ( $hs_data as $hs_key => $hs_value ) { switch( $hs_key ) { case '_headspace_description' : case '_headspace_metakey' : - echo '<meta name="' . esc_attr( $this->hs_keys_to_meta_names[ $hs_key ] ) . '" content="' . esc_attr( $hs_value ) . '" />' . "\n"; + $output[] = '<meta name="' . esc_attr( $this->hs_keys_to_meta_names[ $hs_key ] ) . '" content="' . esc_attr( $hs_value ) . '" />'; + break; + + case '_headspace_scripts' : + foreach ( $hs_value as $_source ) { + $output[] = '<script type="text/javascript" src="' . esc_url( $_source ) . '"></script>'; + } + break; + + case '_headspace_stylesheets' : + foreach ( $hs_value as $_source ) { + $output[] = '<link rel="stylesheet" href="' . esc_url( $_source ) . '" type="text/css" />'; + } break; default : @@ -127,11 +159,21 @@ class ETH_Escape_HeadSpace2 { $robots = implode( ',', $robots ); - echo '<meta name="robots" content="' . esc_attr( $robots ) . '" />' . "\n"; + $output[] = '<meta name="robots" content="' . esc_attr( $robots ) . '" />' . "\n"; + } + + // Raw output should follow all other output + if ( isset( $hs_data[ '_headspace_raw' ] ) ) { + $output[] = $hs_data[ '_headspace_raw' ]; + } + + // Output whatever we've built + if ( ! empty( $output ) ) { + echo implode( "\n", $output ); } // Mark end of output - echo "<!-- Escape HeadSpace2 -->\n"; + echo "\n<!-- Escape HeadSpace2 -->\n"; } }