Yet Another Related Posts Plugin (YARPP) - Version 4.0.1b1

Version Description

Download this release

Release Info

Developer mitchoyoshitaka
Plugin Icon 128x128 Yet Another Related Posts Plugin (YARPP)
Version 4.0.1b1
Comparing to
See all releases

Code changes from version 4.0 to 4.0.1b1

class-admin.php CHANGED
@@ -23,8 +23,6 @@ class YARPP_Admin {
23
exit;
24
}
25
26
- //add_image_size( 'yarpp-thumbnail', $width, $height, $crop );
27
-
28
add_action( 'admin_init', array( $this, 'ajax_register' ) );
29
add_action( 'admin_menu', array( $this, 'ui_register' ) );
30
add_filter( 'current_screen', array( $this, 'settings_screen' ) );
23
exit;
24
}
25
26
add_action( 'admin_init', array( $this, 'ajax_register' ) );
27
add_action( 'admin_menu', array( $this, 'ui_register' ) );
28
add_filter( 'current_screen', array( $this, 'settings_screen' ) );
class-core.php CHANGED
@@ -44,6 +44,15 @@ class YARPP {
44
add_filter( 'the_content_feed', array( $this, 'the_content_feed' ), 600 );
45
add_filter( 'the_excerpt_rss', array( $this, 'the_excerpt_rss' ), 600 );
46
47
if ( isset($_REQUEST['yarpp_debug']) )
48
$this->debug = true;
49
@@ -283,6 +292,13 @@ class YARPP {
283
return $this->cache->cache_status() > 0.1 && $avg > 2;
284
}
285
286
/*
287
* UPGRADE ROUTINES
288
*/
@@ -949,9 +965,12 @@ class YARPP {
949
'after_related', 'no_results', 'order', 'promote_yarpp',
950
'thumbnails_heading', 'thumbnails_default' );
951
952
$r = array();
953
foreach ( $options as $option ) {
954
- if ( isset($args['domain']) && 'rss' == $args['domain'] &&
955
in_array( $option, $options_with_rss_variants ) )
956
$default = $this->get_option( 'rss_' . $option );
957
else
@@ -1024,7 +1043,7 @@ class YARPP {
1024
else
1025
$post_types = array( get_post_type() );
1026
1027
- $post_types = apply_filters( 'yarpp_map_post_types', $post_types );
1028
1029
return $content . $this->display_related(null, array(
1030
'post_type' => $post_types,
@@ -1037,13 +1056,16 @@ class YARPP {
1037
return $content;
1038
1039
if ( $this->get_option('cross_relate') )
1040
- $type = $this->get_post_types();
1041
- else if ( 'page' == get_post_type() )
1042
- $type = array( 'page' );
1043
else
1044
- $type = array( 'post' );
1045
1046
- return $content . $this->display_related(null, array('post_type' => $type, 'domain' => 'rss'), false);
1047
}
1048
1049
function the_excerpt_rss($content) {
@@ -1082,7 +1104,7 @@ class YARPP {
1082
1083
// @since 4: optional data collection (default off)
1084
function optin_ping() {
1085
- if ( get_transient( 'yarpp_optin' ) )
1086
return true;
1087
1088
$remote = wp_remote_post( 'http://yarpp.org/optin/1/', array( 'body' => $this->optin_data() ) );
@@ -1091,9 +1113,28 @@ class YARPP {
1091
return false;
1092
1093
if ( $result = $remote['body'] )
1094
- set_transient( 'yarpp_optin', $result, 60 * 60 * 24 * 7 );
1095
}
1096
1097
1098
// 3.5.2: clean_pre is deprecated in WP 3.4, so implement here.
1099
function clean_pre( $text ) {
44
add_filter( 'the_content_feed', array( $this, 'the_content_feed' ), 600 );
45
add_filter( 'the_excerpt_rss', array( $this, 'the_excerpt_rss' ), 600 );
46
47
+ // register yarpp-thumbnail size, if theme has not already
48
+ // @todo: make these UI-configurable?
49
+ if ( false === $this->thumbnail_size() ) {
50
+ $width = 120;
51
+ $height = 120;
52
+ $crop = true;
53
+ add_image_size( 'yarpp-thumbnail', $width, $height, $crop );
54
+ }
55
+
56
if ( isset($_REQUEST['yarpp_debug']) )
57
$this->debug = true;
58
292
return $this->cache->cache_status() > 0.1 && $avg > 2;
293
}
294
295
+ function thumbnail_size() {
296
+ global $_wp_additional_image_sizes;
297
+ if ( !isset($_wp_additional_image_sizes['yarpp-thumbnail']) )
298
+ return false;
299
+ return $_wp_additional_image_sizes['yarpp-thumbnail'];
300
+ }
301
+
302
/*
303
* UPGRADE ROUTINES
304
*/
965
'after_related', 'no_results', 'order', 'promote_yarpp',
966
'thumbnails_heading', 'thumbnails_default' );
967
968
+ if ( !isset($args['domain']) )
969
+ $args['domain'] = 'website';
970
+
971
$r = array();
972
foreach ( $options as $option ) {
973
+ if ( 'rss' == $args['domain'] &&
974
in_array( $option, $options_with_rss_variants ) )
975
$default = $this->get_option( 'rss_' . $option );
976
else
1043
else
1044
$post_types = array( get_post_type() );
1045
1046
+ $post_types = apply_filters( 'yarpp_map_post_types', $post_types, 'website' );
1047
1048
return $content . $this->display_related(null, array(
1049
'post_type' => $post_types,
1056
return $content;
1057
1058
if ( $this->get_option('cross_relate') )
1059
+ $post_types = $this->get_post_types();
1060
else
1061
+ $post_types = array( get_post_type() );
1062
+
1063
+ $post_types = apply_filters( 'yarpp_map_post_types', $post_types, 'rss' );
1064
1065
+ return $content . $this->display_related(null, array(
1066
+ 'post_type' => $post_types,
1067
+ 'domain' => 'rss'
1068
+ ), false);
1069
}
1070
1071
function the_excerpt_rss($content) {
1104
1105
// @since 4: optional data collection (default off)
1106
function optin_ping() {
1107
+ if ( $this->get_timeout( 'yarpp_optin' ) )
1108
return true;
1109
1110
$remote = wp_remote_post( 'http://yarpp.org/optin/1/', array( 'body' => $this->optin_data() ) );
1113
return false;
1114
1115
if ( $result = $remote['body'] )
1116
+ $this->set_timeout( 'yarpp_optin', 60 * 60 * 24 * 7 );
1117
+ }
1118
+
1119
+ // a version of the transient functions which is unaffected by caching plugin behavior.
1120
+ // we want to store this long.
1121
+ private function get_timeout( $transient ) {
1122
+ $transient_timeout = $transient . '_timeout';
1123
+ if ( get_option( $transient_timeout ) < time() ) {
1124
+ delete_option( $transient_timeout );
1125
+ return false; // timed out
1126
+ }
1127
+ return true; // still ok
1128
}
1129
1130
+ private function set_timeout( $transient, $expiration = 0 ) {
1131
+ $transient_timeout = $transient . '_timeout';
1132
+ if ( false === get_option( $transient_timeout ) ) {
1133
+ add_option( $transient_timeout, time() + $expiration, '', 'no' );
1134
+ } else {
1135
+ update_option( $transient_timeout, time() + $expiration );
1136
+ }
1137
+ }
1138
1139
// 3.5.2: clean_pre is deprecated in WP 3.4, so implement here.
1140
function clean_pre( $text ) {
readme.txt CHANGED
@@ -241,6 +241,15 @@ If you are a bilingual speaker of English and another language and an avid user
241
242
== Changelog ==
243
244
= 4.0 =
245
* New thumbnail template option!
246
* No PHP required—just visit the settings page
241
242
== Changelog ==
243
244
+ = 4.0.1 =
245
+ * Improvements to thumbnail handling
246
+ * Thumbnails of the appropriate size are generated on the fly, if they do not already exist
247
+ * Thumbnail size can be specified by adding `add_image_size( 'yarpp-thumbnail', $width, $height, true );` to your theme's `functions.php` file. In the future I may add some UI to the settings to also set this... feedback is requested on whether this is a good idea.
248
+ * Fixed a typo and simplified an item in the dynamic `styles-thumbnails.php` styles
249
+ * Bugfix: a class of `yarpp-related-` with a stray hyphen was sometimes being produced. Now fixed so it produces `yarpp-related`.
250
+ * Bugfix: some transients expired too soon if object caching was used
251
+ * The `yarpp_map_post_types` filter now also applies to feeds and takes an extra argument to know whether the context is `website` or `rss`.
252
+
253
= 4.0 =
254
* New thumbnail template option!
255
* No PHP required—just visit the settings page
styles-thumbnails.php CHANGED
@@ -10,7 +10,7 @@ $width = 120;
10
if ( isset($_GET['height']) )
11
$height = (int) $_GET['height'];
12
if ( isset($_GET['width']) )
13
- $height = (int) $_GET['width'];
14
15
$margin = 5;
16
$width_with_margins = $width + 2 * $margin;
@@ -38,7 +38,6 @@ header( 'Content-Type: text/css' );
38
margin: <?php echo $margin; ?>px;
39
}
40
.yarpp-thumbnails-horizontal .yarpp-thumbnail > img, .yarpp-thumbnails-horizontal .yarpp-thumbnail-default {
41
- margin-bottom: 0px;
42
display: block;
43
}
44
.yarpp-thumbnails-horizontal .yarpp-thumbnail-title {
@@ -55,11 +54,7 @@ header( 'Content-Type: text/css' );
55
.yarpp-thumbnail-default {
56
overflow: hidden;
57
}
58
- .yarpp-thumbnail-default > img.yarpp-thumbnail-default-wide {
59
- height: <?php echo $height; ?>px;
60
- max-width: none;
61
- }
62
- .yarpp-thumbnail-default > img.yarpp-thumbnail-default-tall {
63
- width: <?php echo $width; ?>px;
64
- max-height: none;
65
}
10
if ( isset($_GET['height']) )
11
$height = (int) $_GET['height'];
12
if ( isset($_GET['width']) )
13
+ $width = (int) $_GET['width'];
14
15
$margin = 5;
16
$width_with_margins = $width + 2 * $margin;
38
margin: <?php echo $margin; ?>px;
39
}
40
.yarpp-thumbnails-horizontal .yarpp-thumbnail > img, .yarpp-thumbnails-horizontal .yarpp-thumbnail-default {
41
display: block;
42
}
43
.yarpp-thumbnails-horizontal .yarpp-thumbnail-title {
54
.yarpp-thumbnail-default {
55
overflow: hidden;
56
}
57
+ .yarpp-thumbnail-default > img {
58
+ min-height: <?php echo $height; ?>px;
59
+ min-width: <?php echo $width; ?>px;
60
}
template-thumbnails.php CHANGED
@@ -10,22 +10,16 @@
10
11
$options = array( 'thumbnails_heading', 'thumbnails_default', 'no_results' );
12
extract( $this->parse_args( $args, $options ) );
13
-
14
- global $_wp_additional_image_sizes;
15
-
16
- // @todo: add support for other theme-specified sizes?
17
- // if ( isset($_wp_additional_image_sizes['yarpp-thumbnail']) )
18
- // $size = 'yarpp-thumbnail';
19
- // elseif ( isset($_wp_additional_image_sizes['post-thumbnail']) )
20
- // $size = 'post-thumbnail';
21
-
22
- if ( isset($size) ) {
23
- $width = (int) $_wp_additional_image_sizes[$size]['width'];
24
- $height = (int) $_wp_additional_image_sizes[$size]['height'];
25
} else {
26
$size = '120x120'; // the ultimate default
27
$width = 120;
28
$height = 120;
29
}
30
31
// a little easter egg: if the default image URL is left blank,
@@ -42,11 +36,27 @@ if (have_posts()) {
42
43
$output .= "<a class='yarpp-thumbnail' href='" . get_permalink() . "' title='" . the_title_attribute('echo=0') . "'>" . "\n";
44
45
- if ( has_post_thumbnail() )
46
$output .= get_the_post_thumbnail( null, $size );
47
- else
48
- $output .= '<span class="yarpp-thumbnail-default"><img class="yarpp-thumbnail-default-wide" src="' . esc_url($thumbnails_default) . '"/></span>';
49
// assume default images (header images) are wider than they are tall
50
51
$output .= '<span class="yarpp-thumbnail-title">' . get_the_title() . '</span>';
52
$output .= '</a>' . "\n";
10
11
$options = array( 'thumbnails_heading', 'thumbnails_default', 'no_results' );
12
extract( $this->parse_args( $args, $options ) );
13
+ if ( false !== ($dimensions = $this->thumbnail_size()) ) {
14
+ $width = (int) $dimensions['width'];
15
+ $height = (int) $dimensions['height'];
16
+ $size = 'yarpp-thumbnail';
17
} else {
18
$size = '120x120'; // the ultimate default
19
$width = 120;
20
$height = 120;
21
+ $dimensions = array( $width, $height, false );
22
+ // @todo true for crop?
23
}
24
25
// a little easter egg: if the default image URL is left blank,
36
37
$output .= "<a class='yarpp-thumbnail' href='" . get_permalink() . "' title='" . the_title_attribute('echo=0') . "'>" . "\n";
38
39
+ if ( has_post_thumbnail() ) {
40
+ $thumbnail_id = get_post_thumbnail_id( get_the_ID() );
41
+ $downsized = image_downsize( $thumbnail_id, $size );
42
+ if ( $dimensions['crop'] && $downsized[1] && $downsized[2] &&
43
+ ( $downsized[1] != $width || $downsized[2] != $height ) ) {
44
+ // we want to trigger recomputation of the thumbnail here
45
+ // (only if downsized width and height are specified, for Photon behavior)
46
+ $fullsizepath = get_attached_file( $thumbnail_id );
47
+ if ( false !== $fullsizepath && file_exists( $fullsizepath ) ) {
48
+ require_once(ABSPATH . 'wp-admin/includes/image.php');
49
+ $metadata = wp_generate_attachment_metadata( $thumbnail_id, $fullsizepath );
50
+ if ( !is_wp_error( $metadata ) ) {
51
+ wp_update_attachment_metadata( get_post_thumbnail_id( get_the_ID() ), $metadata );
52
+ }
53
+ }
54
+ }
55
$output .= get_the_post_thumbnail( null, $size );
56
+ } else {
57
+ $output .= '<span class="yarpp-thumbnail-default"><img src="' . esc_url($thumbnails_default) . '"/></span>';
58
// assume default images (header images) are wider than they are tall
59
+ }
60
61
$output .= '<span class="yarpp-thumbnail-title">' . get_the_title() . '</span>';
62
$output .= '</a>' . "\n";
yarpp.php CHANGED
@@ -2,14 +2,14 @@
2
/*
3
Plugin Name: Yet Another Related Posts Plugin
4
Plugin URI: http://yarpp.org/
5
- Description: Returns a list of related entries based on a unique algorithm for display on your blog and RSS feeds. Now with custom post type support!
6
- Version: 4.0
7
Author: mitcho (Michael Yoshitaka Erlewine)
8
Author URI: http://mitcho.com/
9
Donate link: http://tinyurl.com/donatetomitcho
10
*/
11
12
- define('YARPP_VERSION', '4.0');
13
define('YARPP_DIR', dirname(__FILE__));
14
define('YARPP_NO_RELATED', ':(');
15
define('YARPP_RELATED', ':)');
2
/*
3
Plugin Name: Yet Another Related Posts Plugin
4
Plugin URI: http://yarpp.org/
5
+ Description: Returns a list of related entries based on a unique algorithm for display on your blog and RSS feeds. Now with Now with thumbnail support built-in!
6
+ Version: 4.0.1b1
7
Author: mitcho (Michael Yoshitaka Erlewine)
8
Author URI: http://mitcho.com/
9
Donate link: http://tinyurl.com/donatetomitcho
10
*/
11
12
+ define('YARPP_VERSION', '4.0.1b1');
13
define('YARPP_DIR', dirname(__FILE__));
14
define('YARPP_NO_RELATED', ':(');
15
define('YARPP_RELATED', ':)');