Version Description
Download this release
Release Info
| Developer | ViktorFroberg |
| Plugin | |
| Version | 1.0 |
| Comparing to | |
| See all releases | |
Version 1.0
- README.md +16 -0
- readme.txt +40 -0
- yoast-seo-acf-content-analysis.php +129 -0
- yoast-seo-plugin.js +64 -0
README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ACF-Content Analysis for Yoast SEO
|
| 2 |
+
This plugin ensures that Yoast SEO analysize all ACF content including FlexiContent and Repeaters
|
| 3 |
+
|
| 4 |
+
## Filters
|
| 5 |
+
`ysacf_exclude_fields`: exceclude acf fields from Yoast scoring.
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
Example: exceclude text-color field from Yoast scoring.
|
| 9 |
+
|
| 10 |
+
```
|
| 11 |
+
add_filter('ysacf_exclude_fields', function(){
|
| 12 |
+
return array(
|
| 13 |
+
'text_color',
|
| 14 |
+
);
|
| 15 |
+
});
|
| 16 |
+
```
|
readme.txt
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
=== ACF-Content Analysis for Yoast SEO ===
|
| 2 |
+
Contributors: viktorfroberg, marol87,pekz0r, AngryCreative
|
| 3 |
+
Tags: Angry Creative, Yoast SEO, Yoast, SEO, ACF, Advanced Custom Fields
|
| 4 |
+
Requires at least: 4.0
|
| 5 |
+
Tested up to: 4.3.1
|
| 6 |
+
Stable tag: 1.0
|
| 7 |
+
License: GPLv2 or later
|
| 8 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 9 |
+
|
| 10 |
+
This plugin ensures that Yoast SEO analysize all ACF content including FlexiContent and Repeaters.
|
| 11 |
+
Requires version 3.0 or later of Yoast SEO plugin.
|
| 12 |
+
|
| 13 |
+
== Description ==
|
| 14 |
+
|
| 15 |
+
This plugin ensures that Yoast SEO analysize all ACF content including FlexiContent and Repeaters.
|
| 16 |
+
Requires version 3.0 or later of Yoast SEO plugin.
|
| 17 |
+
|
| 18 |
+
= Filters =
|
| 19 |
+
`ysacf_exclude_fields`: exceclude acf fields from Yoast scoring. Should return array of field names.
|
| 20 |
+
|
| 21 |
+
Example: exceclude text-color field from Yoast scoring.
|
| 22 |
+
|
| 23 |
+
`
|
| 24 |
+
add_filter('ysacf_exclude_fields', function(){
|
| 25 |
+
return array(
|
| 26 |
+
'text_color',
|
| 27 |
+
);
|
| 28 |
+
});
|
| 29 |
+
`
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
== Installation ==
|
| 33 |
+
|
| 34 |
+
1. Download, unzip and upload the plugin folder to the `/wp-content/plugins/` directory
|
| 35 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress (activate for network if multisite)
|
| 36 |
+
|
| 37 |
+
== Changelog ==
|
| 38 |
+
|
| 39 |
+
= 1.0.0 =
|
| 40 |
+
* First public release
|
yoast-seo-acf-content-analysis.php
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/*
|
| 3 |
+
Plugin Name: ACF-Content Analysis for Yoast SEO
|
| 4 |
+
Plugin URI: http://angrycreative.se
|
| 5 |
+
Description: This plugin ensures that Yoast SEO analysize all ACF content including FlexiContent and Repeaters
|
| 6 |
+
Version: 1.0
|
| 7 |
+
Author: ViktorFroberg, marol87, AngryCreative
|
| 8 |
+
Author URI: http://angrycreative.se
|
| 9 |
+
License: GPL
|
| 10 |
+
*/
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
// If this file is called directly, abort.
|
| 14 |
+
if ( ! defined( 'WPINC' ) ) {
|
| 15 |
+
die;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
define('AC_SEO_ACF_ANALYSIS_PLUGIN_SLUG', 'ac-yoast-seo-acf-content-analysis');
|
| 19 |
+
define('AC_SEO_ACF_ANALYSIS_PLUGIN_PATH', plugin_dir_path( __FILE__ ));
|
| 20 |
+
define('AC_SEO_ACF_ANALYSIS_PLUGIN_URL', plugins_url('', __FILE__).'/');
|
| 21 |
+
define('AC_SEO_ACF_ANALYSIS_PLUGIN_NAME', untrailingslashit(plugin_basename(__FILE__)));
|
| 22 |
+
|
| 23 |
+
class AC_Yoast_SEO_ACF_Content_Analysis
|
| 24 |
+
{
|
| 25 |
+
/**
|
| 26 |
+
* Plugin version, used for autoatic updates and for cache-busting of style and script file references.
|
| 27 |
+
*
|
| 28 |
+
* @since 0.1.0
|
| 29 |
+
* @var string
|
| 30 |
+
*/
|
| 31 |
+
const VERSION = '1.0';
|
| 32 |
+
/**
|
| 33 |
+
* Unique identifier for the plugin.
|
| 34 |
+
* This value is used as the text domain when internationalizing strings of text. It should
|
| 35 |
+
* match the Text Domain file header in the main plugin file.
|
| 36 |
+
*
|
| 37 |
+
* @since 0.1.0
|
| 38 |
+
* @var string
|
| 39 |
+
*/
|
| 40 |
+
public $plugin_slug = 'ysacf';
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
function __construct(){
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
|
| 48 |
+
add_action( 'admin_print_scripts-post-new.php', array($this, 'enqueue_admin_scripts') , 999 );
|
| 49 |
+
add_action( 'admin_print_scripts-post.php', array($this, 'enqueue_admin_scripts'), 999 );
|
| 50 |
+
add_action( 'wp_ajax_' . $plugin_slug . '_get_fields', array($this, 'ajax_get_fields') );
|
| 51 |
+
}
|
| 52 |
+
function get_excluded_fields() {
|
| 53 |
+
return apply_filters( 'ysacf_exclude_fields', array() );
|
| 54 |
+
}
|
| 55 |
+
/**
|
| 56 |
+
* Filter what ACF Fields not to score
|
| 57 |
+
* @param field name array
|
| 58 |
+
*/
|
| 59 |
+
|
| 60 |
+
function get_field_data($fields) {
|
| 61 |
+
|
| 62 |
+
$values = $this->get_values( $fields );
|
| 63 |
+
$data = '';
|
| 64 |
+
|
| 65 |
+
foreach($fields as $key =>$item) {
|
| 66 |
+
|
| 67 |
+
if(in_array($key, $this->get_excluded_fields()) ){
|
| 68 |
+
continue;
|
| 69 |
+
} else {
|
| 70 |
+
switch(gettype($item)) {
|
| 71 |
+
case 'string':
|
| 72 |
+
if (preg_match('/(\.jpg|\.png|\.bmp)$/', $item)) {
|
| 73 |
+
$data = $data.' <img src="'.$item .'">';
|
| 74 |
+
} else {
|
| 75 |
+
$data = $data.' '.$item;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
break;
|
| 79 |
+
case 'array':
|
| 80 |
+
if($key == 'sizes') {
|
| 81 |
+
// put all images in img tags for scoring.
|
| 82 |
+
$data = $data.' <img src="'.$item['sizes']['thumbnail'];
|
| 83 |
+
} else {
|
| 84 |
+
|
| 85 |
+
$data = $data.' '.$this->get_field_data($item);
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
break;
|
| 89 |
+
}
|
| 90 |
+
}
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
return $data;
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
function get_values($array) {
|
| 97 |
+
$value_array = array_values($array);
|
| 98 |
+
return $value_array;
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
function ajax_get_fields() {
|
| 102 |
+
$pid = $_POST['postId'];
|
| 103 |
+
$fields = get_fields( $pid );
|
| 104 |
+
|
| 105 |
+
wp_send_json( $this->get_field_data( $fields ) );
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
/**
|
| 109 |
+
* Register and enqueue admin-specific JavaScript.
|
| 110 |
+
*
|
| 111 |
+
* @since 0.1.0
|
| 112 |
+
*/
|
| 113 |
+
public function enqueue_admin_scripts() {
|
| 114 |
+
$pid = isset($_GET['post']) ? $_GET['post'] : $post->ID;
|
| 115 |
+
wp_enqueue_script($this->plugin_slug, AC_SEO_ACF_ANALYSIS_PLUGIN_URL . 'yoast-seo-plugin.js', array('jquery', 'yoast-seo', 'wp-seo-post-scraper'), self::VERSION);
|
| 116 |
+
|
| 117 |
+
wp_localize_script($this->plugin_slug, 'yoast_acf_settings', array(
|
| 118 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
| 119 |
+
'id' => $pid,
|
| 120 |
+
'ajax_action' => $plugin_slug . '_get_fields'
|
| 121 |
+
));
|
| 122 |
+
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
new AC_Yoast_SEO_ACF_Content_Analysis();
|
| 129 |
+
|
yoast-seo-plugin.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
jQuery( document ).ready( function($) {
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
var fieldData = "";
|
| 5 |
+
YoastSEO_ACF_Content_Analysis = function() {
|
| 6 |
+
|
| 7 |
+
YoastSEO.app.registerPlugin( 'ACF_Content_Analysis', {status: 'loading'} );
|
| 8 |
+
|
| 9 |
+
this.appendACFFields();
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
YoastSEO_ACF_Content_Analysis.prototype.appendACFFields = function( ) {
|
| 15 |
+
|
| 16 |
+
var $this = this;
|
| 17 |
+
|
| 18 |
+
$.ajax({
|
| 19 |
+
url: yoast_acf_settings.ajax_url,
|
| 20 |
+
type: 'POST',
|
| 21 |
+
dataType: 'JSON',
|
| 22 |
+
data: {
|
| 23 |
+
postId : yoast_acf_settings.id,
|
| 24 |
+
action: yoast_acf_settings.ajax_action
|
| 25 |
+
}
|
| 26 |
+
})
|
| 27 |
+
.done(function(acf_fields) {
|
| 28 |
+
|
| 29 |
+
$this.setFieldData(acf_fields);
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
})
|
| 33 |
+
.fail(function() {
|
| 34 |
+
console.log("error");
|
| 35 |
+
})
|
| 36 |
+
.always(function() {
|
| 37 |
+
console.log("complete");
|
| 38 |
+
});
|
| 39 |
+
|
| 40 |
+
};
|
| 41 |
+
|
| 42 |
+
YoastSEO_ACF_Content_Analysis.prototype.setFieldData = function( data ) {
|
| 43 |
+
|
| 44 |
+
YoastSEO.app.pluginReady( 'ACF_Content_Analysis' );
|
| 45 |
+
fieldData = data;
|
| 46 |
+
this.registerModification();
|
| 47 |
+
|
| 48 |
+
};
|
| 49 |
+
|
| 50 |
+
YoastSEO_ACF_Content_Analysis.prototype.getFieldData = function( data ) {
|
| 51 |
+
|
| 52 |
+
return data + ' ' + fieldData;
|
| 53 |
+
|
| 54 |
+
};
|
| 55 |
+
|
| 56 |
+
YoastSEO_ACF_Content_Analysis.prototype.registerModification = function( data ) {
|
| 57 |
+
YoastSEO.app.registerModification( 'content', this.getFieldData, 'ACF_Content_Analysis', 50 );
|
| 58 |
+
|
| 59 |
+
};
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
new YoastSEO_ACF_Content_Analysis();
|
| 64 |
+
});
|
