Version Description
Download this release
Release Info
Developer | diegoquinteiro |
Plugin | Instant Articles for WP |
Version | 4.0.2 |
Comparing to | |
See all releases |
Code changes from version 4.0.1 to 4.0.2
- CHANGELOG.md +5 -1
- class-instant-articles-post.php +60 -17
- facebook-instant-articles.php +27 -2
- readme.txt +6 -2
CHANGELOG.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1 |
## Change Log
|
2 |
|
3 |
-
### 4.0.
|
|
|
|
|
|
|
|
|
4 |
- [#706](https://github.com/automattic/facebook-instant-articles-wp/pull/706) Check for array index before using it (@diegoquinteiro)
|
5 |
- [#705](https://github.com/automattic/facebook-instant-articles-wp/pull/705) Enable deletion of JSON AMP Style and removes an undef index (@vkama)
|
6 |
- [#704](https://github.com/automattic/facebook-instant-articles-wp/pull/704) Fixed several php notices. Also fixed a bug in should_subit_post() (@vkama)
|
1 |
## Change Log
|
2 |
|
3 |
+
### 4.0.2 (2017/06/30 19:32 +00:00)
|
4 |
+
- [#708](https://github.com/automattic/facebook-instant-articles-wp/pull/708) Do not process non-post pages. Fixes #707 (@diegoquinteiro)
|
5 |
+
- [#709](https://github.com/automattic/facebook-instant-articles-wp/pull/709) Add cache layer for avoiding transforming the article at page render (@diegoquinteiro)
|
6 |
+
|
7 |
+
### 4.0.1 (2017/06/28 18:48 +00:00)
|
8 |
- [#706](https://github.com/automattic/facebook-instant-articles-wp/pull/706) Check for array index before using it (@diegoquinteiro)
|
9 |
- [#705](https://github.com/automattic/facebook-instant-articles-wp/pull/705) Enable deletion of JSON AMP Style and removes an undef index (@vkama)
|
10 |
- [#704](https://github.com/automattic/facebook-instant-articles-wp/pull/704) Fixed several php notices. Also fixed a bug in should_subit_post() (@vkama)
|
class-instant-articles-post.php
CHANGED
@@ -871,18 +871,65 @@ class Instant_Articles_Post {
|
|
871 |
}
|
872 |
}
|
873 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
874 |
/**
|
875 |
* Returns whether the article should be ingested as an Instant Article.
|
876 |
*/
|
877 |
public function should_submit_post() {
|
878 |
|
879 |
-
$post = get_post( $this->get_the_id() );
|
880 |
-
|
881 |
$fb_page_settings = Instant_Articles_Option_FB_Page::get_option_decoded();
|
882 |
if ( isset( $fb_page_settings[ 'page_id' ] ) && !$fb_page_settings[ 'page_id' ] ) {
|
883 |
return false;
|
884 |
}
|
885 |
|
|
|
|
|
886 |
// Don't process if this is just a revision or an autosave.
|
887 |
if ( wp_is_post_revision( $post ) || wp_is_post_autosave( $post ) ) {
|
888 |
return false;
|
@@ -899,38 +946,34 @@ class Instant_Articles_Post {
|
|
899 |
return false;
|
900 |
}
|
901 |
|
902 |
-
//
|
903 |
-
|
904 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
905 |
|
906 |
// Skip empty articles or articles missing title.
|
907 |
// This is important because the save_post action is also triggered by bulk updates, but in this case
|
908 |
// WordPress does not load the content field from DB for performance reasons. In this case, articles
|
909 |
// will be empty here, despite of them actually having content.
|
910 |
-
if (
|
911 |
-
return false;
|
912 |
-
}
|
913 |
-
|
914 |
-
// Don't publish posts with password protection
|
915 |
-
if ( post_password_required( $post ) ) {
|
916 |
return false;
|
917 |
}
|
918 |
|
919 |
// Don't process if contains warnings and blocker flag for transformation warnings is turned on.
|
920 |
$publishing_settings = Instant_Articles_Option_Publishing::get_option_decoded();
|
921 |
$force_submit = get_post_meta( $post->ID, IA_PLUGIN_FORCE_SUBMIT_KEY, true );
|
922 |
-
if (
|
923 |
&& ( ! isset( $publishing_settings[ 'publish_with_warnings' ] ) || ! $publishing_settings[ 'publish_with_warnings' ] )
|
924 |
&& ( ! $force_submit )
|
925 |
) {
|
926 |
return false;
|
927 |
}
|
928 |
|
929 |
-
// Allow to disable post submit via filter
|
930 |
-
if ( false === apply_filters( 'instant_articles_should_submit_post', true, $adapter ) ) {
|
931 |
-
return false;
|
932 |
-
}
|
933 |
-
|
934 |
return true;
|
935 |
}
|
936 |
|
871 |
}
|
872 |
}
|
873 |
|
874 |
+
/**
|
875 |
+
* Returns whether the transformation results in an empty document
|
876 |
+
*/
|
877 |
+
public function is_empty_after_transformation() {
|
878 |
+
// This post meta is a cache on the calculations made by this function
|
879 |
+
$cache = get_post_meta( $this->get_the_id(), '_is_empty_after_transformation', true );
|
880 |
+
if ( $cache ) {
|
881 |
+
// We use 'yes' or 'no' to avoid booleans because
|
882 |
+
// get_post_meta() returns false when the key is not found
|
883 |
+
return ( $cache === 'yes' );
|
884 |
+
}
|
885 |
+
|
886 |
+
$instant_article = $this->to_instant_article();
|
887 |
+
// Skip empty articles or articles missing title.
|
888 |
+
// This is important because the save_post action is also triggered by bulk updates, but in this case
|
889 |
+
// WordPress does not load the content field from DB for performance reasons. In this case, articles
|
890 |
+
// will be empty here, despite of them actually having content.
|
891 |
+
if ( count( $instant_article->getChildren() ) === 0 || ! $instant_article->getHeader() || ! $instant_article->getHeader()->getTitle() ) {
|
892 |
+
update_post_meta( $this->get_the_id(), '_is_empty_after_transformation', 'yes' );
|
893 |
+
return true;
|
894 |
+
}
|
895 |
+
update_post_meta( $this->get_the_id(), '_is_empty_after_transformation', 'no' );
|
896 |
+
return false;
|
897 |
+
}
|
898 |
+
|
899 |
+
|
900 |
+
/**
|
901 |
+
* Returns whether the transformation raises warnings
|
902 |
+
*/
|
903 |
+
public function has_warnings_after_transformation() {
|
904 |
+
// This post meta is a cache on the calculations made by this function
|
905 |
+
$cache = get_post_meta( $this->get_the_id(), '_has_warnings_after_transformation', true );
|
906 |
+
if ( $cache ) {
|
907 |
+
// We use 'yes' or 'no' to avoid booleans because
|
908 |
+
// get_post_meta() returns false when the key is not found
|
909 |
+
return ( $cache === 'yes' );
|
910 |
+
}
|
911 |
+
|
912 |
+
$instant_article = $this->to_instant_article();
|
913 |
+
if ( count( $this->transformer->getWarnings() ) > 0 ) {
|
914 |
+
update_post_meta( $this->get_the_id(), '_has_warnings_after_transformation', 'yes' );
|
915 |
+
return true;
|
916 |
+
}
|
917 |
+
update_post_meta( $this->get_the_id(), '_has_warnings_after_transformation', 'no' );
|
918 |
+
return false;
|
919 |
+
}
|
920 |
+
|
921 |
/**
|
922 |
* Returns whether the article should be ingested as an Instant Article.
|
923 |
*/
|
924 |
public function should_submit_post() {
|
925 |
|
|
|
|
|
926 |
$fb_page_settings = Instant_Articles_Option_FB_Page::get_option_decoded();
|
927 |
if ( isset( $fb_page_settings[ 'page_id' ] ) && !$fb_page_settings[ 'page_id' ] ) {
|
928 |
return false;
|
929 |
}
|
930 |
|
931 |
+
$post = $this->_post;
|
932 |
+
|
933 |
// Don't process if this is just a revision or an autosave.
|
934 |
if ( wp_is_post_revision( $post ) || wp_is_post_autosave( $post ) ) {
|
935 |
return false;
|
946 |
return false;
|
947 |
}
|
948 |
|
949 |
+
// Don't publish posts with password protection
|
950 |
+
if ( post_password_required( $post ) ) {
|
951 |
+
return false;
|
952 |
+
}
|
953 |
+
|
954 |
+
// Allow to disable post submit via filter
|
955 |
+
if ( false === apply_filters( 'instant_articles_should_submit_post', true, $this ) ) {
|
956 |
+
return false;
|
957 |
+
}
|
958 |
|
959 |
// Skip empty articles or articles missing title.
|
960 |
// This is important because the save_post action is also triggered by bulk updates, but in this case
|
961 |
// WordPress does not load the content field from DB for performance reasons. In this case, articles
|
962 |
// will be empty here, despite of them actually having content.
|
963 |
+
if ( $this->is_empty_after_transformation() ) {
|
|
|
|
|
|
|
|
|
|
|
964 |
return false;
|
965 |
}
|
966 |
|
967 |
// Don't process if contains warnings and blocker flag for transformation warnings is turned on.
|
968 |
$publishing_settings = Instant_Articles_Option_Publishing::get_option_decoded();
|
969 |
$force_submit = get_post_meta( $post->ID, IA_PLUGIN_FORCE_SUBMIT_KEY, true );
|
970 |
+
if ( $this->has_warnings_after_transformation()
|
971 |
&& ( ! isset( $publishing_settings[ 'publish_with_warnings' ] ) || ! $publishing_settings[ 'publish_with_warnings' ] )
|
972 |
&& ( ! $force_submit )
|
973 |
) {
|
974 |
return false;
|
975 |
}
|
976 |
|
|
|
|
|
|
|
|
|
|
|
977 |
return true;
|
978 |
}
|
979 |
|
facebook-instant-articles.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Description: Add support for Instant Articles for Facebook to your WordPress site.
|
5 |
* Author: Automattic, Dekode, Facebook
|
6 |
* Author URI: https://vip.wordpress.com/plugins/instant-articles/
|
7 |
-
* Version: 4.0.
|
8 |
* Text Domain: instant-articles
|
9 |
* License: GPLv2
|
10 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -68,7 +68,7 @@ if ( version_compare( PHP_VERSION, '5.4', '<' ) ) {
|
|
68 |
|
69 |
defined( 'ABSPATH' ) || die( 'Shame on you' );
|
70 |
|
71 |
-
define( 'IA_PLUGIN_VERSION', '4.0.
|
72 |
define( 'IA_PLUGIN_PATH_FULL', __FILE__ );
|
73 |
define( 'IA_PLUGIN_PATH', plugin_basename( __FILE__ ) );
|
74 |
define( 'IA_PLUGIN_FILE_BASENAME', pathinfo( __FILE__, PATHINFO_FILENAME ) );
|
@@ -364,6 +364,12 @@ if ( version_compare( PHP_VERSION, '5.4', '<' ) ) {
|
|
364 |
*/
|
365 |
function inject_ia_markup_meta_tag() {
|
366 |
$post = get_post();
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
// Transform the post to an Instant Article.
|
368 |
$adapter = new Instant_Articles_Post( $post );
|
369 |
if ( $adapter->should_submit_post() ) {
|
@@ -451,5 +457,24 @@ if ( version_compare( PHP_VERSION, '5.4', '<' ) ) {
|
|
451 |
}
|
452 |
add_action( 'save_post', 'rescrape_article', 999, 2 );
|
453 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
454 |
|
455 |
}
|
4 |
* Description: Add support for Instant Articles for Facebook to your WordPress site.
|
5 |
* Author: Automattic, Dekode, Facebook
|
6 |
* Author URI: https://vip.wordpress.com/plugins/instant-articles/
|
7 |
+
* Version: 4.0.2
|
8 |
* Text Domain: instant-articles
|
9 |
* License: GPLv2
|
10 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
68 |
|
69 |
defined( 'ABSPATH' ) || die( 'Shame on you' );
|
70 |
|
71 |
+
define( 'IA_PLUGIN_VERSION', '4.0.2' );
|
72 |
define( 'IA_PLUGIN_PATH_FULL', __FILE__ );
|
73 |
define( 'IA_PLUGIN_PATH', plugin_basename( __FILE__ ) );
|
74 |
define( 'IA_PLUGIN_FILE_BASENAME', pathinfo( __FILE__, PATHINFO_FILENAME ) );
|
364 |
*/
|
365 |
function inject_ia_markup_meta_tag() {
|
366 |
$post = get_post();
|
367 |
+
|
368 |
+
// If there's no current post, return
|
369 |
+
if ( ! $post ) {
|
370 |
+
return;
|
371 |
+
}
|
372 |
+
|
373 |
// Transform the post to an Instant Article.
|
374 |
$adapter = new Instant_Articles_Post( $post );
|
375 |
if ( $adapter->should_submit_post() ) {
|
457 |
}
|
458 |
add_action( 'save_post', 'rescrape_article', 999, 2 );
|
459 |
|
460 |
+
function invalidate_post_transformation_info_cache( $post_id, $post ) {
|
461 |
+
// These post metas are caches on the calculations made to decide if
|
462 |
+
// a post is in good state to be converted to an Instant Article or not
|
463 |
+
delete_post_meta( $post_id, '_has_warnings_after_transformation' );
|
464 |
+
delete_post_meta( $post_id, '_is_empty_after_transformation' );
|
465 |
+
}
|
466 |
+
add_action( 'save_post', 'invalidate_post_transformation_info_cache', 10, 2 );
|
467 |
+
|
468 |
+
// We also need to invalidate the transformation caches when the option containing
|
469 |
+
// the custom transformer rules is updated
|
470 |
+
function invalidate_all_posts_transformation_info_cache( $option ) {
|
471 |
+
if ( $option === Instant_Articles_Option_Publishing::OPTION_KEY ) {
|
472 |
+
// These post metas are caches on the calculations made to decide if
|
473 |
+
// a post is in good state to be converted to an Instant Article or not
|
474 |
+
delete_post_meta_by_key( '_has_warnings_after_transformation' );
|
475 |
+
delete_post_meta_by_key( '_is_empty_after_transformation' );
|
476 |
+
}
|
477 |
+
}
|
478 |
+
add_action( 'updated_option', 'invalidate_all_posts_transformation_info_cache', 10, 1 );
|
479 |
|
480 |
}
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: trrine, olethomas, bjornjohansen, dekode, automattic, facebook
|
|
3 |
Tags: instant articles, facebook, mobile
|
4 |
Requires at least: 4.3
|
5 |
Tested up to: 4.8
|
6 |
-
Stable tag: 4.0.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -85,7 +85,11 @@ Usually simply visiting the permalinks settings page in the WordPress dashboard
|
|
85 |
|
86 |
== Changelog ==
|
87 |
|
88 |
-
### 4.0.
|
|
|
|
|
|
|
|
|
89 |
- [#706](https://github.com/automattic/facebook-instant-articles-wp/pull/706) Check for array index before using it (@diegoquinteiro)
|
90 |
- [#705](https://github.com/automattic/facebook-instant-articles-wp/pull/705) Enable deletion of JSON AMP Style and removes an undef index (@vkama)
|
91 |
- [#704](https://github.com/automattic/facebook-instant-articles-wp/pull/704) Fixed several php notices. Also fixed a bug in should_subit_post() (@vkama)
|
3 |
Tags: instant articles, facebook, mobile
|
4 |
Requires at least: 4.3
|
5 |
Tested up to: 4.8
|
6 |
+
Stable tag: 4.0.2
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
85 |
|
86 |
== Changelog ==
|
87 |
|
88 |
+
### 4.0.2 (2017/06/30 19:32 +00:00)
|
89 |
+
- [#708](https://github.com/automattic/facebook-instant-articles-wp/pull/708) Do not process non-post pages. Fixes #707 (@diegoquinteiro)
|
90 |
+
- [#709](https://github.com/automattic/facebook-instant-articles-wp/pull/709) Add cache layer for avoiding transforming the article at page render (@diegoquinteiro)
|
91 |
+
|
92 |
+
### 4.0.1 (2017/06/28 18:48 +00:00)
|
93 |
- [#706](https://github.com/automattic/facebook-instant-articles-wp/pull/706) Check for array index before using it (@diegoquinteiro)
|
94 |
- [#705](https://github.com/automattic/facebook-instant-articles-wp/pull/705) Enable deletion of JSON AMP Style and removes an undef index (@vkama)
|
95 |
- [#704](https://github.com/automattic/facebook-instant-articles-wp/pull/704) Fixed several php notices. Also fixed a bug in should_subit_post() (@vkama)
|