Me respondo yo mismo, las urls canonical , puedes meter una function que las reescriba, algo así:
remove_action('wp_head', 'rel_canonical');
add_action('wp_head', 'my_rel_canonical');
function my_rel_canonical() {
if (is_page('item') && isset($_GET['pubID'])) {
global $post;
$link = get_permalink($post->ID) . '?pubID=' . absint($_GET['pubID']);
echo "<link rel='canonical' href='$link' />\n";
} else {
rel_canonical();
}
}
Ahora bien, en el caso de que uses yoast, entonces puedes filtrar las urls que quieres reescrbir, lo cual puedes dejar el resto para yoast y solo reescribir las que tengan un patron.... algo así:
Este último es el que estoy utilizando yo.
function wpseo_canonical_exclude( $canonical ) {
global $post;
if ( $post->ID == -1) {
$canonical = false;
}
return $canonical;
}
add_filter( 'wpseo_canonical', 'wpseo_canonical_exclude' );