Q:

Фильтр post_link не работает. Wordpress

function append_query_string($url, $post, $leavename) {
    if ($post->post_type == 'post') {
        $url = add_query_arg('foo', 'bar', $url);
    }

    return $url;
}

add_filter('post_link', 'append_query_string', 10, 3);

Пример с документации, в файле functions.php размещен код. Он не срабатывает. term_link фильтр работает.

A:

Фильтр post_link срабатывает в конце вызова функции get_permalink(). Однако у этой функции есть еще 4 возможных вариантов возврата, в зависимости от срабатывания условий в вот этом участке кода:
if ( empty($post->ID) )
    return false;

if ( $post->post_type == 'page' )
    return get_page_link($post, $leavename, $sample);
elseif ( $post->post_type == 'attachment' )
    return get_attachment_link( $post, $leavename );
elseif ( in_array($post->post_type, get_post_types( array('_builtin' => false) ) ) )
    return get_post_permalink($post, $leavename, $sample);

Наверное, в вашем случае, до применения указанного фильтра дело не доходит.

