0

ユーザーがワードプレスのユーザーアカウントのフィールドにソーシャルネットワークのユーザー名を入力した場合にソーシャルアイコンを表示するために使用している簡単なphpスクリプトがあります。

問題は、ネットワークのユーザー名が指定されていなくても、すべてのネットワークアイコンが表示されていることです。

すべてのdivが同じエコー出力にラップされているために発生する理由は明確に理解できますが、各divの条件が個別に満たされている場合、そのエコー内でissetを使用して出力する方法を実際に理解することはできません。

問題の説明があまり混乱しないことを願っています

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

    echo '
<div class="author_networks">
<div class="gplus"><a class="soc_btn gplus_img" href="https://plus.google.com/'. get_the_author_meta('google_plus', $authorID) .'" rel="me" target="_blank"></a></div>
<div class="facebook"><a class="soc_btn facebook_img" href="http://www.facebook.com/'. get_the_author_meta('facebook', $authorID) .'" target="_blank"></a></div>
<div class="twitter"><a class="soc_btn twitter_img" href="http://twitter.com/'. get_the_author_meta('twitter', $authorID) .'" target="_blank"></a></div>
<div class="linkedin"><a class="soc_btn linkedin_img" href="http://www.linkedin.com/company/'. get_the_author_meta('linkedin', $authorID) .'" target="_blank"></a></div>
</div>
</div>'

よろしくお願いします

4

4 に答える 4

1

それぞれに個別のエコー呼び出しを使用します<div>

echo '<div class="author_networks">';
if(isset(get_the_author_meta('google_plus', $authorID))) {
 echo '<div class="gplus">...</div>';
}
if(isset(get_the_author_meta('facebook', $authorID))) {
 echo '<div class="facebook">...</div>';
}
// and so on
echo '</div>';

利用可能な著者データがない場合にそれがget_the_author_meta()返されると仮定します。nullそうでない場合は、別の方法を使用して、データが使用可能かどうかを確認する必要があります。

于 2013-01-15T14:08:40.897 に答える
1

SimeIFステートメントは機能します:

<?
echo '<div class="author_networks">';
if ($condition == 'gplus') {
    echo '<div class="gplus"><a class="soc_btn gplus_img" href="https://plus.google.com/' . get_the_author_meta('google_plus', $authorID) . '" rel="me" target="_blank"></a></div>';
} elseif ($condition == 'facebook') {
    echo '<div class="facebook"><a class="soc_btn facebook_img" href="http://www.facebook.com/' . get_the_author_meta('facebook', $authorID) . '" target="_blank"></a></div>';
} elseif ($condition == 'twitter') {
    echo '<div class="twitter"><a class="soc_btn twitter_img" href="http://twitter.com/' . get_the_author_meta('twitter', $authorID) . '" target="_blank"></a></div>';
} elseif ($condition == 'linkedin') {
    echo '<div class="linkedin"><a class="soc_btn linkedin_img" href="http://www.linkedin.com/company/' . get_the_author_meta('linkedin', $authorID) . '" target="_blank"></a></div>';
}
echo '</div>';
?>
于 2013-01-15T14:08:41.187 に答える
0

echoアイコンごとに別々に使用する必要があると思います

于 2013-01-15T14:08:28.573 に答える
0

別々の部分に分割する必要があり、エコーを削除してphpの外部のhtmlに置き換える必要があります。このような:

?><div class="author_networks"><?php
if (/*google plus check*/) { ?><div class="gplus"><a class="soc_btn gplus_img" href="https://plus.google.com/<?php echo get_the_author_meta('google_plus', $authorID); ?>" rel="me" target="_blank"></a></div>

4〜5のエントリすべてに対してこれを実行すると、完了です。

于 2013-01-15T14:09:06.233 に答える