Closed flowdee closed 6 years ago
@flowdee So sorry for not getting on this. We unhooked Subtitles from Slack and I'm playing cleanup right now. Let me roll out a fix for this and push a new version of the plugin tomorrow!
@flowdee Sorry for the late follow-up. Do you happen to have the specific PHP notice you're receiving and does it happen only when breadcrumbs in Yoast are turned on?
Yes it only happens with enabled breadcrumbs.
[01-Apr-2018 08:56:51 UTC] PHP Notice: wp_seo_get_bc_title is <strong>deprecated</strong> since version WPSEO 5.8! Use wpseo_breadcrumb_single_link_info instead. in /wp-includes/functions.php on line 4090
@flowdee Perfect, thank you. Working on adjustments today and tomorrow. This is top of the list.
Happy to hear 👍
Right now I'm using a hook in all of my projects to prevent deprecated notices from showing up but of course this is only a temporary solution 😄
Would you mind sharing your hook? I don't want to ruin your adjustments by pushing a wrong update to the plugin.
add_filter( 'deprecated_hook_trigger_error', '__return_false' );
But it's hiding all deprecated notices, not only from your plugin. That's why I don't want to use it forever but right now it's better than a bloated log file 😄
Thanks so much. I'll let you know when the fix is live. Should be any day now, definitely this week.
Working undocumented pseudocode. Will tidy this up tomorrow.
add_filter( 'wpseo_breadcrumb_single_link_info', array( &$this, 'plugin_compat_wordpress_seo_new' ) );
public function plugin_compat_wordpress_seo_new( $breadcrumb_text ) {
// check if in loop
$in_the_loop = (bool) in_the_loop();
if ( ! $in_the_loop ) {
return $breadcrumb_text;
}
// subtitle
$post_subtitle = get_the_subtitle(); // get subtitle
$post_subtitle_length = (int) strlen( $post_subtitle ); // get subtitle length
$post_subtitle_length_neg = -1 * $post_subtitle_length;
// title
$post_title = $breadcrumb_text['text']; // get post title
$post_title_length = (int) strlen( $post_title ); // get post title length
// remove subtitle from breadcrumb title
if ( ( $post_title == $post_subtitle ) || ( '' == $post_title ) ) {
return $breadcrumb_text;
}
$post_title = substr( $post_title, 0, $post_subtitle_length_neg );
$post_title = apply_filters( 'compat_wordpress_seo', $post_title );
$reconstructed_title = $post_title . $post_subtitle;
if ( $reconstructed_title == $breadcrumb_text['text'] ) {
$breadcrumb_text['text'] = $post_title;
return $breadcrumb_text;
}
return $breadcrumb_text;
}
Noting that this will require a plugin version bump to 4.0.0.
https://github.com/wecobble/Subtitles/blob/992114173a98845bd4bc39e05e5226210cc93be7/public/class-subtitles.php#L245
Deprecated: wp_seo_get_bc_title New: wpseo_breadcrumb_single_link_info
Would be great if you fix your plugin because it's throwing annoying PHP notices. Thanks ;)