esc_attr() fonksiyonu sadece sonuç döndürür, sonucu yazdırmaz. esc_attr_e() fonksiyonunu kullanabilir veya echo esc_attr() şeklinde çıktı alabilirsiniz.

esc_attr() fonksiyonun kaynağı (bkz: echo, print vb. çıktı alabileceğiniz bir şey yok, sadece return var):
function esc_attr( $text ) {
    $safe_text = wp_check_invalid_utf8( $text );
    $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
    /**
     * Filters a string cleaned and escaped for output in an HTML attribute.
     *
     * Text passed to esc_attr() is stripped of invalid or special characters
     * before output.
     *
     * @since 2.0.6
     *
     * @param string $safe_text The text after it has been escaped.
     * @param string $text      The text prior to being escaped.
     */
    return apply_filters( 'attribute_escape', $safe_text, $text );
}
esc_attr_e() fonksiyonun kaynağı (bkz: esc_attr fonksiyonundaki çıktıyı echo ile yazdırır ve çeviri destekli olarak sunar):
function esc_attr_e( $text, $domain = 'default' ) {
    echo esc_attr( translate( $text, $domain ) );
}
Metinlerin daima çevirilebilir olması önerildiğinden dolayı esc_attr_e() fonksiyonu en doğru yaklaşım olur.

Ek olarak bir konuda daha bilgilendirmek isterim. Yazdığınız kodlar WordPress kod standartlarına uygun değil. Basit bir örnekle WordPress kod standartları short php tags'ı daima reddeder. Bkz: https://developer.wordpress.org/codi...standards/php/