web-dev-qa-db-ja.com

著者バイオソーシャルリンク

私は作者bioにユーザーのソーシャルリンクを表示するために簡単なコードを使っています。 functions.phpの

<?php
function add_remove_contactmethods( $contactmethods ) {
    // Add Twitter
    $contactmethods['Twitter'] = 'Twitter';
    //Add Facebook
    $contactmethods['facebook'] = 'Facebook';
 // Remove Contact Methods
    unset($contactmethods['aim']);
    unset($contactmethods['yim']);
    unset($contactmethods['Jabber']);

    return $contactmethods;
}
add_filter('user_contactmethods','add_remove_contactmethods',10,1);
?>

single.phpの

   <a href="<?php the_author_meta('Twitter'); ?>" title="Twitter" target="_blank" id="Twitter"><img src="/images/Twitter.png" alt="Twitter" /></a>

そのため、ユーザープロファイルのフィールドが空のときに、作成者bioのソーシャルリンクを非表示にする方法はありますか。

私を助けてください...

1
Maan

リンクを印刷する前に get_the_author_meta 関数を使用して、フィールドが空かどうか確認する必要があります。

<?php if(!empty(get_the_author_meta('Twitter'))) { ?>
   <a href="<?php the_author_meta('Twitter'); ?>" title="Twitter" target="_blank" id="Twitter"><img src="/images/Twitter.png" alt="Twitter" /></a>
<?php } ?>

または、試す

<?php if(!empty(get_user_meta(get_the_author_meta('ID'),'Twitter'))) { ?>
   <a href="<?php the_author_meta('Twitter'); ?>" title="Twitter" target="_blank" id="Twitter"><img src="/images/Twitter.png" alt="Twitter" /></a>
<?php } ?>

しかし、いくつかの理由で、それを修正したコードに従った

<?php if(strlen(get_the_author_meta('Twitter')) >5) { ?>
   <a href="<?php the_author_meta('Twitter'); ?>" title="Twitter" target="_blank" id="Twitter"><img src="/images/Twitter.png" alt="Twitter" /></a>
<?php } ?>
2
M-R

ここにソーシャルリンクを作成し、それから簡単な関数を使用して必要な場所にそれらを検索する洗練された方法があります。この機能を使ってショートコードを作成することもできます。 (私のプロジェクトの1つからコードをコピーしたので、必要に応じていくつかのクラスプレフィックスを変更することをお勧めします)。

    /*-----------------------------------------------------------*/
    /*   Add User Social Links (functions.php)
    /*-----------------------------------------------------------*/
    function cfw_add_user_social_links( $user_contact ) {

    /* Add user contact methods */
    $user_contact['Twitter']   = __('Twitter Link', 'textdomain');
    $user_contact['facebook']  = __('Facebook Link', 'textdomain');
    $user_contact['linkedin']  = __('LinkedIn Link', 'textdomain');
    $user_contact['github']    = __('Github Link', 'textdomain');
    $user_contact['instagram'] = __('Instagram Link', 'textdomain');
    $user_contact['dribbble']  = __('Dribbble Link', 'textdomain');
    $user_contact['behance']   = __('Behance Link', 'textdomain');
    $user_contact['skype']     = __('Skype Link', 'textdomain');

    return $user_contact;
}
add_filter('user_contactmethods', 'cfw_add_user_social_links');

function cfw_get_user_social_links() {
    $return  = '<ul class="list-inline">';
    if(!empty(get_the_author_meta('Twitter'))) {
        $return .= '<li><a href="'.get_the_author_meta('Twitter').'" title="Twitter" target="_blank" id="Twitter"><i class="cfw-icon-Twitter"></i></a></li>';
    }
    if(!empty(get_the_author_meta('facebook'))) {
        $return .= '<li><a href="'.get_the_author_meta('facebook').'" title="Facebook" target="_blank" id="facebook"><i class="cfw-icon-facebook"></i></a></li>';
    }
    if(!empty(get_the_author_meta('linkedin'))) {
        $return .= '<li><a href="'.get_the_author_meta('linkedin').'" title="LinkedIn" target="_blank" id="linkedin"><i class="cfw-icon-linkedin"></i></a></li>';
    }
    if(!empty(get_the_author_meta('github'))) {
        $return .= '<li><a href="'.get_the_author_meta('github').'" title="Github" target="_blank" id="github"><i class="cfw-icon-github"></i></a></li>';
    }
    if(!empty(get_the_author_meta('instagram'))) {
        $return .= '<li><a href="'.get_the_author_meta('instagram').'" title="Instagram" target="_blank" id="instagram"><i class="cfw-icon-instagram"></i></a></li>';
    }
    if(!empty(get_the_author_meta('dribbble'))) {
        $return .= '<li><a href="'.get_the_author_meta('dribbble').'" title="Dribbble" target="_blank" id="dribbble"><i class="cfw-icon-dribbble"></i></a></li>';
    }
    if(!empty(get_the_author_meta('behance'))) {
        $return .= '<li><a href="'.get_the_author_meta('behance').'" title="Behance" target="_blank" id="behance"><i class="cfw-icon-behance"></i></a></li>';
    }
    if(!empty(get_the_author_meta('skype'))) {
        $return .= '<li><a href="'.get_the_author_meta('skype').'" title="Skype" target="_blank" id="skype"><i class="cfw-icon-skype"></i></a></li>';
    }
    $return .= '</ul>';

    return $return;
}

今あなたがする必要があるのはあなたが望むところにこの関数を置くことだけです(content-single.php)

<div class="author-social-links">
    <?php echo cfw_get_user_social_links(); ?>
</div>

もちろん、どのフィールドにもソーシャルリンクがない場合は、条件付き文の使用を拡張して全体を隠すことができます。

上記のコードからショートコードを作成する方法は次のとおりです。

/*-----------------------------------------------------*/
/*  Author Social Links Shortcode (functions.php)
/*-----------------------------------------------------*/

add_shortcode( 'author-social-links', 'cfw_author_social_links_shortcode' );
/**
 * this the shortcode [author-social-links]
 */
function cfw_author_social_links_shortcode() {
    return cfw_get_user_social_links();
}
0
Hooman Askari