<!DOCTYPE html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>" /> <?php elegant_description(); elegant_keywords(); elegant_canonical(); /** * Fires in the head, before {@see wp_head()} is called. This action can be used to * insert elements into the beginning of the head before any styles or scripts. * * @since 1.0 */ do_action( 'et_head_meta' ); $template_directory_uri = get_template_directory_uri(); ?> <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" /> <script type="text/javascript"> document.documentElement.className = 'js'; </script> <script src="https://consent-eu.cookiefirst.com/sites/redcresearch.com-1107a607-dd63-4fcc-b9df-d4ca23e4e85c/consent.js"></script> <style> .search_sep{ width: 1px; height: 22px; } .search_icons{ display: flex; width: 20px; height: 20px; justify-content: center; align-items: center; cursor: pointer; } .search_icon_header-x{ display: none; } .search-outer_{ display: inline-flex; justify-content: flex-end; align-items: center; gap: 20px; } .top-bar-outer { display: flex; justify-content: space-between; } .search_container_header { padding-top: 14px; padding-bottom: 14px; background-color: white; display: none; position: absolute; width: 100%; z-index: 999999; left: 0; right: 0; } .search_container_header .col-search .et-search-form input{ background: var(--Colours-Slate-50, #F8FAFC) !important; width: 800px; } .search_container_header .col-search{ text-align: center; } .mobile-search-header{ padding-left: 20px; padding-right: 20px; padding-top: 20px; padding-bottom: 20px; border-bottom: 1px solid var(--color_slate_200); } .mobile-search-header .col-search .et-search-form { width: 100% !important; max-width: 100% !important; position: relative !important; } .mobile-search-header .col-search .et-search-form input{ background: var(--Colours-Slate-50, #F8FAFC); width: 100%; padding-left: 28px; } .mobile-search-header .col-search .et-search-form img { display: flex; width: 14px; height: 14px; justify-content: center; align-items: center; flex-shrink: 0; position: absolute; top: 14px; bottom: 0; right: 18px; } </style> <?php wp_head(); ?> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-FR3DFL48H2"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-FR3DFL48H2'); </script> </head> <body <?php body_class(); ?>> <div class="mobile-menu-redc"> <div class="mobile-menu-inner"> <div class="close-icon-m"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M3.99988 19.999L20.0001 3.9988" stroke="#0F172A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M20.0001 20.0012L3.99988 4.00098" stroke="#0F172A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="mobile-search-header"> <div class="col-search"> <form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> <img src="<?=site_url(); ?>/wp-content/uploads/2024/09/mobile-search.png"> <?php printf( '<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />', esc_attr__( 'Search RED C Research...', 'Divi' ), get_search_query(), esc_attr__( 'Search RED C Research...', 'Divi' ) ); ?> <?php /** * Fires inside the search form element, just before its closing tag. * * @since ?? */ do_action( 'et_search_form_fields' ); ?> <!-- <button type="submit" id="searchsubmit_header">Search</button> --> </form> </div> </div> <?php $cta_buttons = get_field('cta_buttons', 'option'); ?> <div class="header-cta-btns header-cta-btns_mobile"> <a href="<?=$cta_buttons['button_1_url']; ?>"><?=$cta_buttons['button_1_text']; ?></a> <a href="<?=$cta_buttons['button_2_url']; ?>"><?=$cta_buttons['button_2_text']; ?></a> </div> <div class="redc-mobile-nav"> <?php $primaryNav = wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => $menuClass, 'menu_id' => 'top-menu', 'echo' => false ) ); echo et_core_esc_wp( $primaryNav ); ?> </div> </div> </div> <?php wp_body_open(); $product_tour_enabled = et_builder_is_product_tour_enabled(); $page_container_style = $product_tour_enabled ? ' style="padding-top: 0px;"' : ''; ?> <div id="page-container"<?php echo et_core_intentionally_unescaped( $page_container_style, 'fixed_string' ); ?>> <?php if ( $product_tour_enabled || is_page_template( 'page-template-blank.php' ) ) { return; } $et_secondary_nav_items = et_divi_get_top_nav_items(); $et_phone_number = $et_secondary_nav_items->phone_number; $et_email = $et_secondary_nav_items->email; $et_contact_info_defined = $et_secondary_nav_items->contact_info_defined; $show_header_social_icons = $et_secondary_nav_items->show_header_social_icons; $et_secondary_nav = $et_secondary_nav_items->secondary_nav; $et_top_info_defined = $et_secondary_nav_items->top_info_defined; $et_slide_header = 'slide' === et_get_option( 'header_style', 'left' ) || 'fullscreen' === et_get_option( 'header_style', 'left' ) ? true : false; $show_search_icon = ( false !== et_get_option( 'show_search_icon', true ) && ! $et_slide_header ) || is_customize_preview(); ?> <?php if ( $et_top_info_defined && ! $et_slide_header || is_customize_preview() ) : ?> <?php ob_start(); ?> <div id="top-header"<?php echo $et_top_info_defined ? '' : 'style="display: none;"'; ?>> <div class="container clearfix"> <?php if ( $et_contact_info_defined ) : ?> <div id="et-info"> <?php if ( ! empty( $et_phone_number = et_get_option( 'phone_number' ) ) ) : ?> <span id="et-info-phone"><?php echo et_core_esc_previously( et_sanitize_html_input_text( strval( $et_phone_number ) ) ); ?></span> <?php endif; ?> <?php if ( ! empty( $et_email = et_get_option( 'header_email' ) ) ) : ?> <a href="<?php echo esc_attr( 'mailto:' . $et_email ); ?>"><span id="et-info-email"><?php echo esc_html( $et_email ); ?></span></a> <?php endif; ?> <?php if ( true === $show_header_social_icons ) { get_template_part( 'includes/social_icons', 'header' ); } ?> </div> <?php endif; // true === $et_contact_info_defined ?> <div id="et-secondary-menu"> <?php if ( ! $et_contact_info_defined && true === $show_header_social_icons ) { get_template_part( 'includes/social_icons', 'header' ); } else if ( $et_contact_info_defined && true === $show_header_social_icons ) { ob_start(); get_template_part( 'includes/social_icons', 'header' ); $duplicate_social_icons = ob_get_contents(); ob_end_clean(); printf( '<div class="et_duplicate_social_icons"> %1$s </div>', et_core_esc_previously( $duplicate_social_icons ) ); } if ( '' !== $et_secondary_nav ) { echo et_core_esc_wp( $et_secondary_nav ); } et_show_cart_total(); ?> </div> </div> </div> <?php $top_header = ob_get_clean(); /** * Filters the HTML output for the top header. * * @since 3.10 * * @param string $top_header */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_top_header', $top_header ), 'html' ); ?> <?php endif; // true ==== $et_top_info_defined ?> <?php if ( $et_slide_header || is_customize_preview() ) : ?> <?php ob_start(); ?> <div class="et_slide_in_menu_container"> <?php if ( 'fullscreen' === et_get_option( 'header_style', 'left' ) || is_customize_preview() ) { ?> <span class="mobile_menu_bar et_toggle_fullscreen_menu"></span> <?php } ?> <?php if ( $et_contact_info_defined || true === $show_header_social_icons || false !== et_get_option( 'show_search_icon', true ) || class_exists( 'woocommerce' ) || is_customize_preview() ) { ?> <div class="et_slide_menu_top"> <?php if ( 'fullscreen' === et_get_option( 'header_style', 'left' ) ) { ?> <div class="et_pb_top_menu_inner"> <?php } ?> <?php } if ( true === $show_header_social_icons ) { get_template_part( 'includes/social_icons', 'header' ); } et_show_cart_total(); ?> <?php if ( false !== et_get_option( 'show_search_icon', true ) || is_customize_preview() ) : ?> <?php if ( 'fullscreen' !== et_get_option( 'header_style', 'left' ) ) { ?> <div class="clear"></div> <?php } ?> <form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> <?php printf( '<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />', esc_attr__( 'Search …', 'Divi' ), get_search_query(), esc_attr__( 'Search for:', 'Divi' ) ); /** * Fires inside the search form element, just before its closing tag. * * @since ?? */ do_action( 'et_search_form_fields' ); ?> <button type="submit" id="searchsubmit_header"></button> </form> <?php endif; // true === et_get_option( 'show_search_icon', false ) ?> <?php if ( $et_contact_info_defined ) : ?> <div id="et-info"> <?php if ( ! empty( $et_phone_number = et_get_option( 'phone_number' ) ) ) : ?> <span id="et-info-phone"><?php echo et_core_esc_previously( et_sanitize_html_input_text( strval( $et_phone_number ) ) ); ?></span> <?php endif; ?> <?php if ( ! empty( $et_email = et_get_option( 'header_email' ) ) ) : ?> <a href="<?php echo esc_attr( 'mailto:' . $et_email ); ?>"><span id="et-info-email"><?php echo esc_html( $et_email ); ?></span></a> <?php endif; ?> </div> <?php endif; // true === $et_contact_info_defined ?> <?php if ( $et_contact_info_defined || true === $show_header_social_icons || false !== et_get_option( 'show_search_icon', true ) || class_exists( 'woocommerce' ) || is_customize_preview() ) { ?> <?php if ( 'fullscreen' === et_get_option( 'header_style', 'left' ) ) { ?> </div> <?php } ?> </div> <?php } ?> <div class="et_pb_fullscreen_nav_container"> <?php $slide_nav = ''; $slide_menu_class = 'et_mobile_menu'; $slide_nav = wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container' => '', 'fallback_cb' => '', 'echo' => false, 'items_wrap' => '%3$s' ) ); $slide_nav .= wp_nav_menu( array( 'theme_location' => 'secondary-menu', 'container' => '', 'fallback_cb' => '', 'echo' => false, 'items_wrap' => '%3$s' ) ); ?> <ul id="mobile_menu_slide" class="<?php echo esc_attr( $slide_menu_class ); ?>"> <?php if ( '' === $slide_nav ) : ?> <?php if ( 'on' === et_get_option( 'divi_home_link' ) ) { ?> <li <?php if ( is_home() ) echo( 'class="current_page_item"' ); ?>><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php esc_html_e( 'Home', 'Divi' ); ?></a></li> <?php }; ?> <?php show_page_menu( $slide_menu_class, false, false ); ?> <?php show_categories_menu( $slide_menu_class, false ); ?> <?php else : echo et_core_esc_wp( $slide_nav ) ; endif; ?> </ul> </div> </div> <?php $slide_header = ob_get_clean(); /** * Filters the HTML output for the slide header. * * @since 3.10 * * @param string $top_header */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_slide_header', $slide_header ), 'html' ); ?> <?php endif; // true ==== $et_slide_header ?> <?php ob_start(); ?> <header id="main-header" data-height-onload="<?php echo esc_attr( et_get_option( 'menu_height', '66' ) ); ?>"> <div class="container clearfix et_menu_container top-social-search-bar"> <?php $social_linking = get_field('social_linking', 'option'); $fb_url = $social_linking['facebook_profile_url']; $tw_url = $social_linking['twitter_profile_url']; $insta_url = $social_linking['instagram_profile_url']; $yt_url = $social_linking['youtube_profile_url']; ?> <div class="top-bar-outer"> <div class="social-outer_"> <ul> <?php if(!empty($fb_url)): ?> <li> <a href="<?=$fb_url;?>"> <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_2381_16032)"> <path d="M18 9C18 4.02943 13.9706 0 9 0C4.02943 0 0 4.02943 0 9C0 13.4921 3.29115 17.2155 7.59375 17.8907V11.6016H5.30859V9H7.59375V7.01719C7.59375 4.76156 8.93742 3.51562 10.9932 3.51562C11.9779 3.51562 13.0078 3.69141 13.0078 3.69141V5.90625H11.873C10.755 5.90625 10.4062 6.60006 10.4062 7.3118V9H12.9023L12.5033 11.6016H10.4062V17.8907C14.7088 17.2155 18 13.4923 18 9Z" fill="#22505F"/> </g> <defs> <clipPath id="clip0_2381_16032"> <rect width="18" height="18" fill="white"/> </clipPath> </defs> </svg> </a> </li> <?php endif; ?> <?php if(!empty($tw_url)): ?> <li> <a href="<?=$tw_url;?>"> <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M18 3.90133C17.3384 4.19431 16.6217 4.38075 15.8775 4.46065C16.6493 4.00787 17.2282 3.31538 17.5038 2.48971C16.7871 2.88923 15.9877 3.20884 15.1608 3.36864C14.4992 2.67615 13.5345 2.25 12.4594 2.25C10.4196 2.25 8.7657 3.84806 8.7657 5.81901C8.7657 6.11199 8.79326 6.37833 8.84839 6.64467C5.78867 6.48487 3.05972 5.07324 1.24043 2.91586C0.909648 3.44855 0.744257 4.06114 0.744257 4.70036C0.744257 5.95218 1.40582 7.04419 2.39816 7.68341C1.79173 7.65678 1.21286 7.49697 0.716692 7.23063C0.716692 7.25726 0.716692 7.25726 0.716692 7.2839C0.716692 9.01513 1.98469 10.4534 3.69372 10.773C3.39051 10.8529 3.05972 10.9062 2.72894 10.9062C2.48086 10.9062 2.26034 10.8795 2.03982 10.8529C2.50842 12.2645 3.88668 13.3033 5.48545 13.3299C4.21746 14.2887 2.61868 14.8481 0.882083 14.8481C0.578867 14.8481 0.303216 14.8214 0 14.7948C1.62634 15.8069 3.58346 16.3929 5.67841 16.3929C12.487 16.3929 16.2083 10.9594 16.2083 6.21852C16.2083 6.05872 16.2083 5.89891 16.2083 5.76574C16.8698 5.25968 17.5038 4.62046 18 3.90133Z" fill="#22505F"/> </svg> </a> </li> <?php endif; ?> <?php if(!empty($insta_url)): ?> <li> <a href="<?=$insta_url;?>"> <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_8_40035)"> <path d="M15.5454 0H2.45461C1.09897 0 0 1.09897 0 2.45461V15.5454C0 16.901 1.09897 18 2.45461 18H15.5454C16.901 18 18 16.901 18 15.5454V2.45461C18 1.09897 16.901 0 15.5454 0Z" fill="#22505F"/> <path d="M6.48421 4.90922C6.48421 5.75648 5.79726 6.44344 4.94999 6.44344C4.10272 6.44344 3.41577 5.75648 3.41577 4.90922C3.41577 4.06195 4.10272 3.375 4.94999 3.375C5.79726 3.375 6.48421 4.06195 6.48421 4.90922Z" fill="white"/> <path d="M6.13651 7.46633V14.2441C6.13757 14.4536 5.96882 14.6245 5.75929 14.6255H4.14034C3.93081 14.6263 3.7603 14.4568 3.75995 14.2473C3.75995 14.2466 3.75995 14.2459 3.75995 14.2452V7.46633C3.75995 7.25609 3.93046 7.08594 4.14034 7.08594H5.75718C5.96706 7.08664 6.13651 7.2568 6.13651 7.46633Z" fill="white"/> <path d="M14.5881 10.9942V14.275C14.5888 14.4676 14.433 14.6241 14.2404 14.6248C14.2397 14.6248 14.239 14.6248 14.2383 14.6248H12.4998C12.3072 14.6255 12.1507 14.4697 12.15 14.2771C12.15 14.2764 12.15 14.2757 12.15 14.275V11.0954C12.15 10.6208 12.2892 9.01734 10.9093 9.01734C9.84059 9.01734 9.62262 10.1146 9.57973 10.6078V14.2753C9.57973 14.4666 9.4261 14.6223 9.2352 14.6251H7.55578C7.36313 14.6251 7.20703 14.469 7.20703 14.2764V7.43602C7.20633 7.24336 7.36207 7.08691 7.55473 7.08621H9.2352C9.42821 7.08621 9.585 7.24266 9.585 7.43602V8.02699C9.98192 7.4318 10.5697 6.97266 11.8248 6.97266C14.6046 6.97266 14.5881 9.56824 14.5881 10.9942V10.9942Z" fill="white"/> </g> <defs> <clipPath id="clip0_8_40035"> <rect width="18" height="18" fill="white"/> </clipPath> </defs> </svg> </a> </li> <?php endif; ?> <?php if(!empty($yt_url)): ?> <li> <a href="<?=$yt_url;?>"> <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M18 9.39208C18 9.39208 18 12.3462 17.6287 13.7749C17.4206 14.5547 16.8131 15.1694 16.0424 15.38C14.6306 15.75 8.99997 15.75 8.99997 15.75C8.99997 15.75 3.38061 15.75 1.95749 15.3573C1.18687 15.1467 0.579373 14.5319 0.371249 13.7521C0 12.3462 0 9.375 0 9.375C0 9.375 0 6.42087 0.371249 4.99788C0.579373 4.21808 1.20375 3.58627 1.95749 3.37567C3.36936 3 8.99997 3 8.99997 3C8.99997 3 14.6306 3 16.0424 3.39275C16.8131 3.60335 17.4206 4.21808 17.6287 4.99788C18.0112 6.42087 18 9.39208 18 9.39208ZM7.2056 12.1071L11.8912 9.375L7.2056 6.64286V12.1071Z" fill="#22505F"/> </svg> </a> </li> <?php endif; ?> </ul> </div> <div class="search-outer_"> <img src="<?=site_url(); ?>/wp-content/uploads/2024/09/Seperator.png" class="search_sep"> <img src="<?=site_url(); ?>/wp-content/uploads/2024/09/Icon.png" alt="" class="search_icon_header search_icons"> <img src="<?=site_url(); ?>/wp-content/uploads/2024/09/Icon-1.png" alt="" class="search_icon_header-x search_icons"> </div> </div> </div> <div class="container search_container_header"> <div class="col-search"> <form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> <?php printf( '<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />', esc_attr__( 'Search RED C Research...', 'Divi' ), get_search_query(), esc_attr__( 'Search RED C Research...', 'Divi' ) ); ?> <?php /** * Fires inside the search form element, just before its closing tag. * * @since ?? */ do_action( 'et_search_form_fields' ); ?> <button type="submit" id="searchsubmit_header">Search</button> </form> </div> </div> <div class="container clearfix et_menu_container et_menu_header_"> <?php $logo = ( $user_logo = et_get_option( 'divi_logo' ) ) && ! empty( $user_logo ) ? $user_logo : $template_directory_uri . '/images/logo.png'; // Get logo image size based on attachment URL. $logo_size = et_get_attachment_size_by_url( $logo ); $logo_width = ( ! empty( $logo_size ) && is_numeric( $logo_size[0] ) ) ? $logo_size[0] : '93'; // 93 is the width of the default logo. $logo_height = ( ! empty( $logo_size ) && is_numeric( $logo_size[1] ) ) ? $logo_size[1] : '43'; // 43 is the height of the default logo. ob_start(); ?> <div class="logo_container"> <a href="<?php echo esc_url( home_url( '/' ) ); ?>"> <img src="<?php the_field('logo', 'option'); ?>" width="<?php echo esc_attr( $logo_width ); ?>" height="<?php echo esc_attr( $logo_height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?>" id="logo" data-height-percentage="<?php echo esc_attr( et_get_option( 'logo_height', '54' ) ); ?>" /> </a> </div> <?php $logo_container = ob_get_clean(); /** * Filters the HTML output for the logo container. * * @since 3.10 * * @param string $logo_container */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_logo_container', $logo_container ), 'html' ); ?> <div id="et-top-navigation" data-height="<?php echo esc_attr( et_get_option( 'menu_height', '66' ) ); ?>" data-fixed-height="<?php echo esc_attr( et_get_option( 'minimized_menu_height', '40' ) ); ?>"> <?php if ( ! $et_slide_header || is_customize_preview() ) : ?> <nav id="top-menu-nav"> <?php $menuClass = 'nav'; if ( 'on' === et_get_option( 'divi_disable_toptier' ) ) $menuClass .= ' et_disable_top_tier'; $primaryNav = ''; $primaryNav = wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => $menuClass, 'menu_id' => 'top-menu', 'echo' => false ) ); if ( empty( $primaryNav ) ) : ?> <ul id="top-menu" class="<?php echo esc_attr( $menuClass ); ?>"> <?php if ( 'on' === et_get_option( 'divi_home_link' ) ) { ?> <li <?php if ( is_home() ) echo( 'class="current_page_item"' ); ?>><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php esc_html_e( 'Home', 'Divi' ); ?></a></li> <?php }; ?> <?php show_page_menu( $menuClass, false, false ); ?> <?php show_categories_menu( $menuClass, false ); ?> </ul> <?php else : echo et_core_esc_wp( $primaryNav ); endif; ?> </nav> <?php endif; ?> <?php if ( ! $et_top_info_defined && ( ! $et_slide_header || is_customize_preview() ) ) { et_show_cart_total( array( 'no_text' => true, ) ); } ?> <?php if ( $et_slide_header || is_customize_preview() ) : ?> <span class="mobile_menu_bar et_pb_header_toggle et_toggle_<?php echo esc_attr( et_get_option( 'header_style', 'left' ) ); ?>_menu"></span> <?php endif; ?> <?php /** * Fires at the end of the 'et-top-navigation' element, just before its closing tag. * * @since 1.0 */ do_action( 'et_header_top' ); ?> </div> <!-- #et-top-navigation --> <?php $cta_buttons = get_field('cta_buttons', 'option'); ?> <div class="header-cta-btns header-cta-btns_desktop"> <a href="<?=$cta_buttons['button_1_url']; ?>"><?=$cta_buttons['button_1_text']; ?></a> <a href="<?=$cta_buttons['button_2_url']; ?>"><?=$cta_buttons['button_2_text']; ?></a> </div> </div> <!-- .container --> </header> <!-- #main-header --> <?php $main_header = ob_get_clean(); /** * Filters the HTML output for the main header. * * @since 3.10 * * @param string $main_header */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_main_header', $main_header ), 'html' ); ?> <div id="et-main-area"> <?php /** * Fires after the header, before the main content is output. * * @since 3.10 */ do_action( 'et_before_main_content' );

In this first general election poll, following seismic results in the local and European elections, RED C have reviewed our approach, as we always do post elections, and made some tweaks. Firstly, fine tuning our approach to both inviting and selecting respondents, and secondly implementing the use of much better recall among voters of how they voted at the more recent local election results, to help calibrate and weight our sample.
The results of the poll show that while vote behaviour in the local elections does appear to have had an impact on general election vote intention, vote intention for both local and general election should not be conflated as there are different variables at play
The myriad of candidates at both the local and European elections mean people tend to be drawn to candidates they know or have heard of working hard in the local area, rather than focusing as much on party. Canvassing, name recognition, community ties, and therefore incumbency also all have a major impact on how people vote at local elections.
For general elections, while candidates are of course still important, party politics at a national level have much more influence on people’s vote behaviour. This makes it much easier to poll based on party support and is why polling for general elections has been much more accurate as a result, as local nuances have a far smaller impact.
This helps somewhat to explain why, despite general election polls showing a steep downward trend in support for the party in the run up to the recent local elections as anti-establishment voters remove their support being unhappy with their belief that the party didn’t support their views. Sinn Féin did much more poorly even than anyone anticipated.
The theory also somewhat underpins why, when voters are asked now how they would vote in a general election, Sinn Féin support is much better than those local election results. In fact, the party secures 20% of the first preference vote in this general election poll, vs. just 12% secured at the local elections. Of course, this is still a long way down from the highs of 36% in polls a year or so ago, and a good chunk below what the party actually achieved at the last general election.
At the same time, Fianna Fáil secures 19% of the first preference vote in this poll, which is a significant boost vs. general election poll tracking in the past year. Clearly buoyed by strong local election results, but still 4% below what they achieved at those local elections. While Fine Gael secure 21% of the first preference vote, some 2% behind what they achieved at the local elections.
So, can all these differences between general election polling and local election results all be put down to the local candidate vs. party effect?
There is also evidence that Fianna Fáil gained because of strong campaigning on the ground and due to well-known local election candidates. In 2019, Fianna Fáil outperformed Sinn Féin by over 3.4/1 in terms of seat achieved affording them a considerably advantage in terms of building up name recognition and demonstrating work at a local level. Conversely, Sinn Féin likely suffered for the opposite reasons, with weaker local issue campaigning, a low number of sitting councillors and as such relatively unknown candidates.
Data also suggests that those intending to vote Sinn Féin at a general election were less likely to vote in the local elections, with turnout in some more disadvantaged urban areas being particularly low Moreover, younger voters, who make up a significant proportion of Sinn Féin’s base, typically are less likely to show up in second order elections. Assuming they do get out to vote in a forthcoming general election, the Sinn Féin vote will be boosted again as a result. Don’t forget that in 2019 Sinn Fein only secured 9% of the vote at local elections, but just 8 months later secured 25% of the vote at the general election in 2020.
Thirdly, voters have been shown to be less likely to vote for independent or smaller party candidates at a general election than they might be at a local election. In this poll, they secure just 20% vs a very high 28% secured at the local elections. With Sinn Féin, Social Democrats, Green Party and People Before Profit-Solidarity all making gains as a result.
It is clear then that while local election results are not a predictor of general election performance, they have had an impact on the political landscape, and set the tone and momentum for the months preceding the General Election. With the three big parties now practically neck and neck in voters’ minds when margin for error of a poll of this nature is taken into account, all is to play for in the run up to the main event.
Download the RED C Report below