0

基本的に著者のプロファイル(画像、バイオ、ソーシャルメディアへのリンク)を著者のアーカイブページに配置し、同じ著者によるすべての投稿を配置するスクリプトを何とか作成しました(phpの知識が非常に限られているため)。

このスクリプトの問題は、著者プロファイルの入力が空の場合、空の href と src を div に返すことです。これを行う理由は理解していますが、それを修正する方法がわかりません。

2番目の問題は、作成者がスクリプトがその画像を返すカスタム画像リンクを設定した場合ですが、そのリンクの入力が空の場合にやりたいことは、アバターを返すことです。

これが私のスクリプトです

    /***********************************************************
******************* Custom Author Page *********************
***********************************************************/
function author_info() {
if (is_author($avatar, $id_or_email, $size, $default, $alt)) {
 if(get_query_var('author_name'))
      $author = get_userdatabylogin(get_query_var('author_name'));
      $authorID = $author->ID;
      $custom_avatar = get_the_author_meta('imageurl', $authorID);
    if ($authorID=="1")
    echo ' ';
    else 
 echo '<div class="author_profile author_'. $authorID .'">
        <div class="author_avatar"><img alt="Author" src="'. $custom_avatar .'" width="140" height="140" /></div>
            <div class="author_info"> 
                <div class="author_description">
                <p>'. get_the_author_meta('description', $authorID) .'</p> 
                <p><strong>Author\'s Website:</strong><a href="'. get_the_author_meta('user_url', $authorID) .'">'. get_the_author_meta('wesitename', $authorID) .'</a></p>
                </div>
            </div>
            <div class="author_links">
            <a href="https://plus.google.com/'. get_the_author_meta('google_plus', $authorID) .'" rel="me" target="_blank"><img alt="Google Plus Profile" src="'. get_the_author_meta('google_plus_icon', $authorID) .'" width="128" height="64" /></a>
            <a href="http://www.facebook.com/'. get_the_author_meta('facebook', $authorID) .'" target="_blank"><img alt="Facebook Page" src="'. get_the_author_meta('facebook_icon', $authorID) .'" width="128" height="64" /></a>
            <a href="http://twitter.com/'. get_the_author_meta('twitter', $authorID) .'" target="_blank"><img alt="Twitter Page" src="'. get_the_author_meta('twitter_icon', $authorID) .'" width="128" height="64" /></a>
            <a href="http://www.linkedin.com/company/'. get_the_author_meta('linkedin', $authorID) .'" target="_blank"><img alt="LinkedIn Profile" src="'. get_the_author_meta('linkedin_icon', $authorID) .'" width="128" height="64" /></a>
            </div>
       </div>
       ';
  ?>
<?php }
}
add_action('thesis_hook_before_content', 'author_info');

あなたの助けは非常に高く評価されています。

4

1 に答える 1

0

関数 get_the_author_meta($type, $id) を変更して、デフォルト値を返すことができます。

get_the_author_meta($type, $id) {
    **Code to get value ** 
    if(isset($value)) {
        return $value;
    } else {
        return "#"; // Or some other string
    }
}

ただし、この解決策は、リンクがまだ表示されることを意味します。リンクをまったく表示したくない場合は、次のようにします。

if(isset(get_the_author_meta('google_plus', $authorID)) && isset(get_the_author_meta('google_plus_icon', $authorID))) :
<a href="https://plus.google.com/'. get_the_author_meta('google_plus', $authorID) .'" rel="me" target="_blank"><img alt="Google Plus Profile" src="'. get_the_author_meta('google_plus_icon', $authorID) .'" width="128" height="64" /></a>
endif;

そうすると、href と img を持つリンクのみが表示されます。

アバターについては、デフォルト値を返すことができます。あなたのコードで、行く場所を見つけてくださいget_the_author_meta('imageurl', $authorID); 。おそらく getImageUrl() のような関数です。その関数で、以前と同様のことを行います。

getImageUrl() {
    **Code to get url ** 
    if(isset($value)) {
        return $value;
    } else {
        return "http://www.mysite.com/img/base-avatar.png"; // Or some other base image
    }
}
于 2013-01-14T13:01:07.863 に答える