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
<?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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment