wecobble / Subtitles

Add subtitles into your WordPress posts, pages, custom post types, and themes. No coding required. Simply activate Subtitles and you're ready to go.
http://wordpress.org/plugins/subtitles/
GNU General Public License v2.0
117 stars 186 forks source link

wp_seo_get_bc_title is deprecated #101

Closed flowdee closed 6 years ago

flowdee commented 6 years ago

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 ;)

philiparthurmoore commented 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!

philiparthurmoore commented 6 years ago

@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?

flowdee commented 6 years ago

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

philiparthurmoore commented 6 years ago

@flowdee Perfect, thank you. Working on adjustments today and tomorrow. This is top of the list.

flowdee commented 6 years ago

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 😄

philiparthurmoore commented 6 years ago

Would you mind sharing your hook? I don't want to ruin your adjustments by pushing a wrong update to the plugin.

flowdee commented 6 years ago

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 😄

philiparthurmoore commented 6 years ago

Thanks so much. I'll let you know when the fix is live. Should be any day now, definitely this week.

philiparthurmoore commented 6 years ago

https://gist.github.com/robneu/7743769#gistcomment-2280213

philiparthurmoore commented 6 years ago

https://yoast.com/yoast-seo-5-8/

philiparthurmoore commented 6 years ago
2018-04-07_20-31-11

https://wordpress.org/plugins/wordpress-seo/advanced/

philiparthurmoore commented 6 years ago

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;
}
philiparthurmoore commented 6 years ago

Noting that this will require a plugin version bump to 4.0.0.