Skip to content
Snippets Groups Projects
Commit 1d3c3e90 authored by Erick Hitter's avatar Erick Hitter
Browse files

Merge branch 'develop' into 'master'

Basic support

Initial plugin functionality, which supports the keywords I actively used. It _does not_ support all HeadSpace2 data because I used so few of the features.

See merge request !1
parents 252be635 0a6730fb
No related branches found
No related tags found
No related merge requests found
<?php
/*
Plugin Name: ETH Escape HeadSpace2
Plugin URI: https://ethitter.com/plugins/
Description: Output existing HeadSpace2 data without the original plugin. Allows HeadSpace2 (no longer maintained) to be deactivated without impactacting legacy content.
Author: Erick Hitter
Version: 0.1
Author URI: https://ethitter.com/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
class ETH_Escape_HeadSpace2 {
/**
* Singleton
*/
private static $instance = null;
/**
* Instantiate singleton
*/
public static function get_instance() {
if ( ! is_a( self::$instance, __CLASS__ ) ) {
self::$instance = new self;
}
return self::$instance;
}
/**
* Class properties
*/
private $hs_string_keys = array(
'_headspace_description',
'_headspace_metakey',
);
private $hs_robots_keys = array(
'_headspace_noindex',
'_headspace_nofollow',
'_headspace_noarchive',
'_headspace_noodp',
'_headspace_noydir',
);
private $hs_keys_to_meta_names = array(
'_headspace_description' => 'description',
'_headspace_metakey' => 'keywords',
);
/**
* Register plugin's hooks
*
* @return null
*/
private function __construct() {
add_action( 'wp_head', array( $this, 'action_wp_head' ) );
}
/**
*
*/
public function action_wp_head() {
// Applies only to individual post objects
if ( ! is_singular() ) {
return;
}
// Check for HS data
$hs_data = array();
foreach ( array_merge( $this->hs_string_keys, $this->hs_robots_keys ) as $hs_key ) {
$value = get_post_meta( get_the_ID(), $hs_key, true );
if ( ! empty( $value ) ) {
$hs_data[ $hs_key ] = $value;
}
}
// Bail if no HS data exists for this post
if ( empty( $hs_data ) ) {
return;
}
// Build output
echo "\n<!-- Escape HeadSpace2 by Erick Hitter; ethitter.com -->\n";
// Handle basic, string-containing keys
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";
break;
default :
continue;
break;
}
}
// Handle robots key, which is build from several meta keys
$robots = array();
foreach ( $this->hs_robots_keys as $hs_robot_key ) {
if ( isset( $hs_data[ $hs_robot_key] ) ) {
$robots[] = str_replace( '_headspace_', '', $hs_robot_key );
}
}
if ( ! empty( $robots ) ) {
if ( 1 === count( $robots ) && in_array( 'noindex', $robots ) ) {
$robots[] = 'follow';
}
$robots = implode( ',', $robots );
echo '<meta name="robots" content="' . esc_attr( $robots ) . '" />' . "\n";
}
// Mark end of output
echo "<!-- Escape HeadSpace2 -->\n";
}
}
ETH_Escape_HeadSpace2::get_instance();
=== ETH Escape HeadSpace2 ===
Contributors: ethitter
Donate link: https://ethitter.com/
Tags: seo, meta tags
Requires at least: 4.4
Tested up to: 4.4
Stable tag: 0.1
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Output existing HeadSpace2 data without the original plugin. Deactivate HeadSpace2 (no longer maintained) without impactacting legacy content.
== Description ==
Outputs data stored in HeadSpace2 post meta without requiring HeadSpace2. This allows one to remove the now-unmaintained HeadSpace2 plugin without losing the data associated with legacy content.
Note that many current SEO plugins for WordPress also handle migration, but since I don't use any such plugins on my network, I created this alternative.
== Installation ==
1. Upload the plugin files to the `/wp-content/plugins/eth-escape-headspace` directory, or install the plugin through the WordPress plugins screen directly.
1. Activate the plugin through the 'Plugins' screen in WordPress
== Frequently Asked Questions ==
= Can I modify existing data using this plugin? =
No. If you need to update entries, reinstall HeadSpace2 or modify the values directly in the database.
== Changelog ==
= 0.1 =
* Initial release
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment