It’s not possible with wp_link_pages(), but you can use paginate_links(). You just need to configure the arguments so that the links are based on the pagination of your post/page. To do this you just need to know:
- The base URL. This is the permalink of the page/post.
- The format of the pagination portion of the URL. This is just the page number, like
/6, and not/page/6or/?page=5or anything like that. - The total number of pages. This is the global
$numpagesvariable. - The current page. This is the global
$pagevariable.
Which you can use like this:
echo paginate_links(
[
'base' => user_trailingslashit( trailingslashit( get_the_permalink() ) . '%_%' ),
'format' => '%#%',
'total' => $numpages,
'current' => $page,
]
);
Note that we want base to be something like this, where %_% is where our page number will go:
http://website.test/2021/03/25/my-post/%_%/
To do this properly we use trailingslashit() on get_the_permalink() to guarantee that there is a slash between the URL and the placeholder. Then we use user_trailingslashit() to add a trailing slash to the very end in case the site is configured that way.