Site logo

Archived topic

Infinite Scroll on AMP First Site

18 replies · Started by Divakara on April 30, 2020

Viewing posts 1–15 of 19

Hi, How can i setup infinite scroll on AMP fist site??
I have enabled "USe infinite scroll" option: https://prnt.sc/s8nlw9
but its not working.

Thanks in advance

Hi there,

AMP doesn't allow javascript so you won't be able to use that option if you want to implement AMP.

Hi Tom,

I have some questions.

1. Do the exact same code work with generatepress??
2. what should be the hook location for the element?

1. It should, but I'm not 100% positive.

2. You could try the after_main_content hook.

Hi Tom,
Thanks for the response.

I have tried that method.. its throwing error --> There has been a critical error on your website.

https://prnt.sc/s9q7pt

Can you check the error_log file on your server for the exact error?

Hi Tom,
I am getting this following error:
[03-May-2020 06:11:17 UTC] PHP Parse error: syntax error, unexpected '<', expecting end of file in /home/r6QgfY5X6fhQbQhO/-----/public_html/wp-content/plugins/gp-premium/elements/class-hooks.php(180) : eval()'d code on line 95
https://prnt.sc/sa0gie

Hi there,

can you share the exact code you have added to your Hook element ?

After adding the code in this forum, please highlight the code and click the Code button before submitting.

Hi David,
This is the code i have added to Hook element.
https://prnt.sc/sa5oe9

<?php
/**
 * A template partial to output pagination for the Twenty Twenty default theme.
 *
 * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
 *
 * @package WordPress
 * @subpackage Twenty_Twenty
 * @since 1.0.0
 */

/**
 * Translators:
 * This text contains HTML to allow the text to be shorter on small screens.
 * The text inside the span with the class nav-short will be hidden on small screens.
 */

$prev_text = sprintf(
	'%s <span class="nav-prev-text">%s</span>',
	'<span aria-hidden="true">&larr;</span>',
	__( 'Newer <span class="nav-short">Posts</span>', 'twentytwenty' )
);
$next_text = sprintf(
	'<span class="nav-next-text">%s</span> %s',
	__( 'Older <span class="nav-short">Posts</span>', 'twentytwenty' ),
	'<span aria-hidden="true">&rarr;</span>'
);

$posts_pagination = get_the_posts_pagination(
	array(
		'mid_size'  => 1,
		'prev_text' => $prev_text,
		'next_text' => $next_text,
	)
);

// If we're not outputting the previous page link, prepend a placeholder with visibility: hidden to take its place.
if ( strpos( $posts_pagination, 'prev page-numbers' ) === false ) {
	$posts_pagination = str_replace( '<div class="nav-links">', '<div class="nav-links"><span class="prev page-numbers placeholder" aria-hidden="true">' . $prev_text . '</span>', $posts_pagination );
}

// If we're not outputting the next page link, append a placeholder with visibility: hidden to take its place.
if ( strpos( $posts_pagination, 'next page-numbers' ) === false ) {
	$posts_pagination = str_replace( '</div>', '<span class="next page-numbers placeholder" aria-hidden="true">' . $next_text . '</span></div>', $posts_pagination );
}

if ( $posts_pagination ) { ?>

	<?php if ( mytheme_is_amp() && ! is_paged()  ) : ?>
		<?php
		// @todo This is not the ideal way to obtain the subsequent pages, but WordPress doesn't provide such a way.
		// @todo The page titles aren't ideal.
		$pages = array_filter( array_map(
			static function( $link ) {
				if ( preg_match( '#<a.+?href="(.+?)">(.+?)</a>#s', $link, $matches ) ) {
					$amp_url = html_entity_decode( $matches[1] );
					$title   = html_entity_decode( $matches[2] );
					return [
						'title'  => $title,
						'ampUrl' => $amp_url,
						'image'  => get_site_icon_url(),
					];
				}
				return null;
			},
			paginate_links( [ 'type' => 'array' ] )
		) );

		$amp_next_page = [
			'pages'         => array_values( $pages ),
			'hideSelectors' => [
				'#site-header',
				'.header-footer-group',
				'#site-footer',
				'#wpadminbar',
			],
		];
		?>
		<amp-next-page>
			<script type="application/json"><?php echo wp_json_encode( $amp_next_page ); ?></script>
		</amp-next-page>

	<?php else : ?>

		<div class="pagination-wrapper section-inner">

			<hr class="styled-separator pagination-separator is-style-wide" aria-hidden="true" />

			<?php echo $posts_pagination; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- already escaped during generation. ?>

		</div><!-- .pagination-wrapper -->
		<?php
	endif;

}

Can you try adding ?> after the last line of that code.

Hi David,
I have added ?> at the end, and its cleared the error. However, infinite Scroll not working.
Can you please check source code on my site .

How can we view the AMP version of the site? Is it enabled by default?

Hey Tom,
It's AMP First site.

This archived topic is closed to new replies.