Version Description
- Please upgrade immediately - Introducing filters for developers to extend Related Posts
=
Download this release
Release Info
| Developer | hiddenpearls |
| Plugin | |
| Version | 1.8.2 |
| Comparing to | |
| See all releases | |
Code changes from version 1.8.1 to 1.8.2
- readme.txt +10 -4
- related-posts-thumbnails.php +83 -21
readme.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 1 |
=== Related Posts Thumbnails Plugin for WordPress ===
|
| 2 |
-
Contributors:
|
| 3 |
Donate link: https://wpbrigade.com/
|
| 4 |
Tags: easy related posts, Related Posts thumbnails, Free Related Posts, related posts, similar related posts
|
| 5 |
Requires at least: 3.6
|
| 6 |
Tested up to: 5.2
|
| 7 |
-
Stable tag: 1.8.
|
| 8 |
License: GPLv3 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
| 10 |
|
|
@@ -71,11 +71,17 @@ If there are no images of the specified size in the post, or file does not exist
|
|
| 71 |
|
| 72 |
== Upgrade Notice ==
|
| 73 |
|
| 74 |
-
= 1.8.
|
| 75 |
-
* Please upgrade immediately -
|
| 76 |
|
| 77 |
== Changelog ==
|
| 78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
= 1.8.1 - 2019-06-25 =
|
| 80 |
* Bug Fix : Thumbnails are not showing when post thumbnail source is selected.
|
| 81 |
|
| 1 |
=== Related Posts Thumbnails Plugin for WordPress ===
|
| 2 |
+
Contributors: hiddenpearls, WPBrigade
|
| 3 |
Donate link: https://wpbrigade.com/
|
| 4 |
Tags: easy related posts, Related Posts thumbnails, Free Related Posts, related posts, similar related posts
|
| 5 |
Requires at least: 3.6
|
| 6 |
Tested up to: 5.2
|
| 7 |
+
Stable tag: 1.8.2
|
| 8 |
License: GPLv3 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
| 10 |
|
| 71 |
|
| 72 |
== Upgrade Notice ==
|
| 73 |
|
| 74 |
+
= 1.8.2 =
|
| 75 |
+
* Please upgrade immediately - Introducing filters for developers to extend Related Posts
|
| 76 |
|
| 77 |
== Changelog ==
|
| 78 |
|
| 79 |
+
= 1.8.2 - 2019-10-16 =
|
| 80 |
+
* New Feature : Filter for related post top text.
|
| 81 |
+
* New Feature : Filter to prevent image size check on inner post images.
|
| 82 |
+
* New Feature : Filter to prevent related posts on builders.
|
| 83 |
+
* New Feature : Filter to remove related post with empty custom field.
|
| 84 |
+
|
| 85 |
= 1.8.1 - 2019-06-25 =
|
| 86 |
* Bug Fix : Thumbnails are not showing when post thumbnail source is selected.
|
| 87 |
|
related-posts-thumbnails.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
* Plugin Name: WordPress Related Posts Thumbnails
|
| 4 |
* Plugin URI: https://wpbrigade.com/wordpress/plugins/related-posts/?utm_source=related-posts-lite&utm_medium=plugin-uri&utm_campaign=pro-upgrade-rp
|
| 5 |
* Description: Showing related posts thumbnails under the posts.
|
| 6 |
-
* Version: 1.8.
|
| 7 |
* Author: WPBrigade
|
| 8 |
* Author URI: https://WPBrigade.com/?utm_source=related-posts-lite&utm_medium=author-link&utm_campaign=pro-upgrade-rp
|
| 9 |
*/
|
|
@@ -67,10 +67,15 @@ class RelatedPostsThumbnails {
|
|
| 67 |
update_option( 'relpoststh_default_image', $this->default_image );
|
| 68 |
|
| 69 |
if ( get_option( 'relpoststh_auto', $this->auto ) ) {
|
| 70 |
-
$priority = apply_filters( 'rpt_content_prioirty', 10 ); // Alter priority of the related post content
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
), $priority );
|
| 75 |
}
|
| 76 |
|
|
@@ -105,7 +110,32 @@ class RelatedPostsThumbnails {
|
|
| 105 |
) );
|
| 106 |
|
| 107 |
add_shortcode( 'related-posts-thumbnails', array( $this, 'related_posts_shortcode' ) );
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
|
| 110 |
function related_posts_shortcode( $atts ) {
|
| 111 |
$atts = shortcode_atts( array(
|
|
@@ -602,7 +632,8 @@ class RelatedPostsThumbnails {
|
|
| 602 |
if ( ! empty( $main_title ) ) {
|
| 603 |
$output .= '<p class="relpoststh-block-title">' . $main_title . '</p>';
|
| 604 |
} else {
|
| 605 |
-
|
|
|
|
| 606 |
}
|
| 607 |
}
|
| 608 |
|
|
@@ -634,19 +665,22 @@ class RelatedPostsThumbnails {
|
|
| 634 |
foreach ( $posts as $post ) {
|
| 635 |
$image = '';
|
| 636 |
$url = '';
|
| 637 |
-
|
| 638 |
|
| 639 |
if ( $thsource == 'custom-field' ) {
|
| 640 |
-
|
| 641 |
-
|
| 642 |
|
| 643 |
if ( empty( $custom_field ) ) {
|
| 644 |
$debug .= 'No custom field specifield, using default thumbnail image;';
|
| 645 |
$url = $this->default_image;
|
| 646 |
-
|
|
|
|
|
|
|
|
|
|
| 647 |
$debug .= 'Custom field meta is empty, using default thumbnail image;';
|
| 648 |
$url = $this->default_image;
|
| 649 |
-
|
| 650 |
$debug .= 'Using custom field;';
|
| 651 |
$url = $custom_field_meta;
|
| 652 |
$theme_resize_url = get_option( 'relpoststh_theme_resize_url', '' );
|
|
@@ -675,14 +709,19 @@ class RelatedPostsThumbnails {
|
|
| 675 |
$debug .= 'Post has no thumbnail;';
|
| 676 |
}
|
| 677 |
}
|
| 678 |
-
|
|
|
|
|
|
|
| 679 |
$debug .= 'Getting image from post body;';
|
| 680 |
$wud = wp_upload_dir();
|
| 681 |
-
|
|
|
|
|
|
|
| 682 |
|
| 683 |
if ( isset( $matches ) && isset( $matches[ 1 ][ 0 ] ) ) {
|
| 684 |
$image = $matches[ 1 ][ 0 ];
|
| 685 |
$html = $matches[ 0 ][ 0 ];
|
|
|
|
| 686 |
if ( !empty( $html ) ) {
|
| 687 |
preg_match( '/alt="([^"]*)"/i', $html, $array );
|
| 688 |
|
|
@@ -690,36 +729,49 @@ class RelatedPostsThumbnails {
|
|
| 690 |
$explode_tag = explode( '"', $array[ 0 ] );
|
| 691 |
$alt = $explode_tag[ 1 ];
|
| 692 |
}
|
| 693 |
-
|
| 694 |
}
|
|
|
|
| 695 |
} else {
|
| 696 |
$debug .= 'No image was found;';
|
| 697 |
}
|
| 698 |
|
| 699 |
if ( strlen( trim( $image ) ) > 0 ) {
|
| 700 |
$image_sizes = @getimagesize( $image );
|
|
|
|
| 701 |
if ( $image_sizes === false ) {
|
| 702 |
-
|
| 703 |
}
|
| 704 |
-
|
|
|
|
|
|
|
| 705 |
$debug .= 'Image used is the required size;';
|
| 706 |
$url = $image;
|
| 707 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 708 |
$debug .= 'Changing image according to Wordpress standards;';
|
| 709 |
$url = preg_replace( '/(-[0-9]+x[0-9]+)?(\.[^\.]*)$/', '-' . $width . 'x' . $height . '$2', $image );
|
| 710 |
}
|
|
|
|
| 711 |
} else {
|
| 712 |
$debug .= 'Found wrong formatted image: ' . $image . ';';
|
| 713 |
}
|
|
|
|
| 714 |
}
|
| 715 |
-
|
| 716 |
-
|
| 717 |
if ( strpos( $url, '/' ) === 0 ) {
|
| 718 |
$url = get_bloginfo( 'url' ) . $url;
|
| 719 |
$debug .= 'Relative url: ' . $url . ';';
|
| 720 |
}
|
| 721 |
|
| 722 |
-
|
|
|
|
| 723 |
$debug .= 'Image URL: ' . $url . ';';
|
| 724 |
$debug .= 'Image is empty or no file. Using default image;';
|
| 725 |
$url = get_option( 'relpoststh_default_image', $this->default_image );
|
|
@@ -809,6 +861,16 @@ class RelatedPostsThumbnails {
|
|
| 809 |
return $this->finish_process( $output, $debug, $time );
|
| 810 |
}
|
| 811 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 812 |
function finish_process( $output, $debug, $time ) {
|
| 813 |
$devmode = get_option( 'relpoststh_devmode', $this->devmode );
|
| 814 |
if ( $devmode ) {
|
| 3 |
* Plugin Name: WordPress Related Posts Thumbnails
|
| 4 |
* Plugin URI: https://wpbrigade.com/wordpress/plugins/related-posts/?utm_source=related-posts-lite&utm_medium=plugin-uri&utm_campaign=pro-upgrade-rp
|
| 5 |
* Description: Showing related posts thumbnails under the posts.
|
| 6 |
+
* Version: 1.8.2
|
| 7 |
* Author: WPBrigade
|
| 8 |
* Author URI: https://WPBrigade.com/?utm_source=related-posts-lite&utm_medium=author-link&utm_campaign=pro-upgrade-rp
|
| 9 |
*/
|
| 67 |
update_option( 'relpoststh_default_image', $this->default_image );
|
| 68 |
|
| 69 |
if ( get_option( 'relpoststh_auto', $this->auto ) ) {
|
| 70 |
+
$priority = apply_filters( 'rpt_content_prioirty', 10 ); // Alter priority of the related post content
|
| 71 |
+
|
| 72 |
+
if ( $this->prevent_on_editors() ) {
|
| 73 |
+
return;
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
add_filter( 'the_content', array(
|
| 77 |
+
$this,
|
| 78 |
+
'auto_show'
|
| 79 |
), $priority );
|
| 80 |
}
|
| 81 |
|
| 110 |
) );
|
| 111 |
|
| 112 |
add_shortcode( 'related-posts-thumbnails', array( $this, 'related_posts_shortcode' ) );
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
/**
|
| 116 |
+
* Prevent related posts on editor screen (builders).
|
| 117 |
+
*
|
| 118 |
+
* @return bool $return
|
| 119 |
+
*/
|
| 120 |
+
function prevent_on_editors() {
|
| 121 |
+
$return = false;
|
| 122 |
+
$prevent_on_edit = apply_filters( 'rpt_prevent_on_edit', array(
|
| 123 |
+
'divi' => false,
|
| 124 |
+
) );
|
| 125 |
+
|
| 126 |
+
foreach ( $prevent_on_edit as $key => $value ) {
|
| 127 |
+
switch ( $key ) {
|
| 128 |
+
case 'divi':
|
| 129 |
+
if ( $value && isset( $_GET['et_fb'] ) ) {
|
| 130 |
+
$return = true;
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
break;
|
| 134 |
+
}
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
return $return;
|
| 138 |
+
}
|
| 139 |
|
| 140 |
function related_posts_shortcode( $atts ) {
|
| 141 |
$atts = shortcode_atts( array(
|
| 632 |
if ( ! empty( $main_title ) ) {
|
| 633 |
$output .= '<p class="relpoststh-block-title">' . $main_title . '</p>';
|
| 634 |
} else {
|
| 635 |
+
$top_text = stripslashes( get_option( 'relpoststh_top_text', $this->top_text ) );
|
| 636 |
+
$output .= stripslashes ( apply_filters( 'rpt_top_text', $top_text ) );
|
| 637 |
}
|
| 638 |
}
|
| 639 |
|
| 665 |
foreach ( $posts as $post ) {
|
| 666 |
$image = '';
|
| 667 |
$url = '';
|
| 668 |
+
$alt = '';
|
| 669 |
|
| 670 |
if ( $thsource == 'custom-field' ) {
|
| 671 |
+
$custom_field = get_option( 'relpoststh_customfield', $this->custom_field );
|
| 672 |
+
$custom_field_meta = get_post_meta( $post->ID, $custom_field, true );
|
| 673 |
|
| 674 |
if ( empty( $custom_field ) ) {
|
| 675 |
$debug .= 'No custom field specifield, using default thumbnail image;';
|
| 676 |
$url = $this->default_image;
|
| 677 |
+
} elseif ( empty( $custom_field_meta ) && apply_filters( 'rpt_remove_empty_cfield', false ) ) {
|
| 678 |
+
$debug .= 'Custom field meta is empty, using rpt_remove_empty_cfield filter;';
|
| 679 |
+
continue;
|
| 680 |
+
} elseif ( empty( $custom_field_meta ) ) {
|
| 681 |
$debug .= 'Custom field meta is empty, using default thumbnail image;';
|
| 682 |
$url = $this->default_image;
|
| 683 |
+
} else {
|
| 684 |
$debug .= 'Using custom field;';
|
| 685 |
$url = $custom_field_meta;
|
| 686 |
$theme_resize_url = get_option( 'relpoststh_theme_resize_url', '' );
|
| 709 |
$debug .= 'Post has no thumbnail;';
|
| 710 |
}
|
| 711 |
}
|
| 712 |
+
|
| 713 |
+
// Theme does not support post-thumbnails, or post does not have assigned thumbnail
|
| 714 |
+
if ( $from_post_body ) {
|
| 715 |
$debug .= 'Getting image from post body;';
|
| 716 |
$wud = wp_upload_dir();
|
| 717 |
+
|
| 718 |
+
// search the first uploaded image in content
|
| 719 |
+
preg_match_all( '|<img.*?src=[\'"](' . $wud[ 'baseurl' ] . '.*?)[\'"].*?>|i', $post->post_content, $matches );
|
| 720 |
|
| 721 |
if ( isset( $matches ) && isset( $matches[ 1 ][ 0 ] ) ) {
|
| 722 |
$image = $matches[ 1 ][ 0 ];
|
| 723 |
$html = $matches[ 0 ][ 0 ];
|
| 724 |
+
|
| 725 |
if ( !empty( $html ) ) {
|
| 726 |
preg_match( '/alt="([^"]*)"/i', $html, $array );
|
| 727 |
|
| 729 |
$explode_tag = explode( '"', $array[ 0 ] );
|
| 730 |
$alt = $explode_tag[ 1 ];
|
| 731 |
}
|
|
|
|
| 732 |
}
|
| 733 |
+
|
| 734 |
} else {
|
| 735 |
$debug .= 'No image was found;';
|
| 736 |
}
|
| 737 |
|
| 738 |
if ( strlen( trim( $image ) ) > 0 ) {
|
| 739 |
$image_sizes = @getimagesize( $image );
|
| 740 |
+
|
| 741 |
if ( $image_sizes === false ) {
|
| 742 |
+
$debug .= 'Unable to determine parsed image size';
|
| 743 |
}
|
| 744 |
+
|
| 745 |
+
if ( ( $image_sizes !== false && isset( $image_sizes[ 0 ] ) ) && $image_sizes[ 0 ] == $width ) {
|
| 746 |
+
// if this image is the same size
|
| 747 |
$debug .= 'Image used is the required size;';
|
| 748 |
$url = $image;
|
| 749 |
+
}
|
| 750 |
+
elseif ( apply_filters( 'rpt_prevent_img_size_check', false ) && $image_sizes[ 0 ] < $width ) {
|
| 751 |
+
// if this image is samll than required size
|
| 752 |
+
$debug .= 'Image used is smaller than the required size, rpt_prevent_img_size_check filter is active;';
|
| 753 |
+
$url = $image;
|
| 754 |
+
}
|
| 755 |
+
else {
|
| 756 |
+
// search for resized thumbnail according to Wordpress thumbnails naming function
|
| 757 |
$debug .= 'Changing image according to Wordpress standards;';
|
| 758 |
$url = preg_replace( '/(-[0-9]+x[0-9]+)?(\.[^\.]*)$/', '-' . $width . 'x' . $height . '$2', $image );
|
| 759 |
}
|
| 760 |
+
|
| 761 |
} else {
|
| 762 |
$debug .= 'Found wrong formatted image: ' . $image . ';';
|
| 763 |
}
|
| 764 |
+
|
| 765 |
}
|
| 766 |
+
}
|
| 767 |
+
|
| 768 |
if ( strpos( $url, '/' ) === 0 ) {
|
| 769 |
$url = get_bloginfo( 'url' ) . $url;
|
| 770 |
$debug .= 'Relative url: ' . $url . ';';
|
| 771 |
}
|
| 772 |
|
| 773 |
+
// parsed URL is empty or no image found
|
| 774 |
+
if ( empty( $url ) ) {
|
| 775 |
$debug .= 'Image URL: ' . $url . ';';
|
| 776 |
$debug .= 'Image is empty or no file. Using default image;';
|
| 777 |
$url = get_option( 'relpoststh_default_image', $this->default_image );
|
| 861 |
return $this->finish_process( $output, $debug, $time );
|
| 862 |
}
|
| 863 |
|
| 864 |
+
// function is_url_404( $url ) {
|
| 865 |
+
// $response = wp_remote_request( $url,
|
| 866 |
+
// array(
|
| 867 |
+
// 'method' => 'GET'
|
| 868 |
+
// )
|
| 869 |
+
// );
|
| 870 |
+
|
| 871 |
+
// return $response['response']['code'];
|
| 872 |
+
// }
|
| 873 |
+
|
| 874 |
function finish_process( $output, $debug, $time ) {
|
| 875 |
$devmode = get_option( 'relpoststh_devmode', $this->devmode );
|
| 876 |
if ( $devmode ) {
|
