Pular navegação

Open

Topic Tags: Compatibility

Overview of the issue

When using the Header Footer Code Manager plugin to insert snippets into specific pages, the display conditions are not correctly applied to translated pages when using WPML. This results in missing snippets, in the translated versions of pages.

Workaround

Please, make sure of having a full site backup of your site before proceeding.

  • Open the …/wp-content/plugins/header-footer-code-manager/99robots-header-footer-code-manager.php file
  • Look for line 550.
  • Replace:
    case 's_pages':
        $is_not_empty_s_pages = self::hfcm_not_empty( $scriptdata, 's_pages' );
        if ( $is_not_empty_s_pages ) {
            // Gets the page ID of the blog page
            $blog_page = get_option( 'page_for_posts' );
            // Checks if the blog page is present in the array of selected pages
            if ( in_array( $blog_page, json_decode( $scriptdata->s_pages ) ) ) {
                if ( is_page( json_decode( $scriptdata->s_pages ) ) || (!is_front_page() && is_home()) ) {
                    $out = self::hfcm_render_snippet( $scriptdata );
                }
            } elseif ( is_page( json_decode( $scriptdata->s_pages ) ) ) {
                $out = self::hfcm_render_snippet( $scriptdata );
            }
        }
        break;
            
  • With:
    case 's_pages':
        $is_not_empty_s_pages = self::hfcm_not_empty( $scriptdata, 's_pages' );
        if ( $is_not_empty_s_pages ) {
            // WPML workaround for compsupp-7802
            $original_ids = json_decode( $scriptdata->s_pages);
            foreach ( $original_ids as $original_id ) {
                $translated_ids[] = apply_filters( 'wpml_object_id', $original_id, 'page');
                }
            // Gets the page ID of the blog page
            $blog_page = get_option( 'page_for_posts' );
            // Checks if the blog page is present in the array of selected pages
            if ( in_array( $blog_page, json_decode( $scriptdata->s_pages ) ) ) {
                if ( is_page( $translated_ids ) || (!is_front_page() && is_home()) ) {
                    $out = self::hfcm_render_snippet( $scriptdata );
                }
            } elseif ( is_page( $translated_ids ) ) {
                $out = self::hfcm_render_snippet( $scriptdata );
            }
        }
        break;
            

Deixe uma resposta

Por favor, mantenha-se no assunto e seja respeitoso com os outros. Se precisar de ajuda com questões não relacionadas a este post, use nosso Fórum de Suporte para iniciar um chat ou enviar um ticket.

Você pode usar estas tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>