有没有办法避免重复行
is there a way to avoid duplicate line
嗨,在 wordpress 网站上,我必须向特定用户输出特定内容,我的代码在下方,我的问题是如何避免重复重复行
if (is_user_logged_in() and get_current_user_id() != get_the_author_meta('ID')) {
if (in_array('customer', (array) $user->roles)) {
if (get_current_user_id() == $authorid) { ?>
<i class="fa fa-comments send_designer_msg" designer_id="<?php echo get_the_author_meta("ID"); ?>" logo_number="<?php echo $entryno; ?>" aria-hidden="true"></i>
<?php }
} else { ?>
<i class="fa fa-comments send_designer_msg" designer_id="<?php echo get_the_author_meta("ID"); ?>" logo_number="<?php echo $entryno; ?>" aria-hidden="true"></i>
<?php }
}
任何帮助谢谢
条件逻辑比较难理解
您想为评论显示一个图标(基于 fontAwesome)——仅适用于满足以下要求的登录用户:
- 不是这个post的'designer'。
- 具有角色'customer'
不确定,您的条件逻辑设置正确,因为它似乎为任何不是 'designer' 的用户输出评论标记...对不起 – 但是 [=54= 之间的区别在哪里] 和 designer_id?
稍微干一点的实现可能是这段代码:
<?php
$current_user_id = get_current_user_id();
$designer_id = get_the_author_meta("ID");
$author_id = '???';
$show_comment_icon = false;
if (is_user_logged_in() && $current_user_id != $designer_id ) {
// if user has role "customer"
if (in_array ('customer', (array)$user->roles)) {
// if currently logged in user is the author of the current post?
if ( $current_user_id == $author_id) {
$show_comment_icon = true;
}
} else {
// if user is not a "customer"
$show_comment_icon = true;
}
// comment icon html template
$comment_icon =
'<i
class="fa fa-comments send_designer_msg"
data-designer-id="'.$designer_id.'"
data-logo-number="'.$entry_no.'"
aria-hidden="true">
</i>';
// output your html
if($show_comment_icon){
echo $comment_icon;
}
}
?>
尽管这个修改后的代码片段肯定存在缺陷:
php 中避免重复代码和提高可读性的一些建议:
- 选择合适的封闭概念(在php和html之间切换时)*
- 从输出中分离出'data compilation'和逻辑
- 慷慨地在代码中插入注释
- 在变量中保存重复查询的值(例如 functions/classes 返回)
- 最后努力修改你的代码(可能没有人会因为这种努力而奖励你——除了你自己,即使在几年后也能理解你的代码)
enclosing/switching 在 php 和 html 代码之间
您的代码有效。然而,易读性受到影响。
一个可行的经验法则是决定是使用相当封闭的 php-in-html 还是 html-in-php 是比例。
如果涉及更多 php 处理(条件、计算、过滤等),最好使用变量来定义您的 html 输出。
如果 html 模板部分占主导地位,您可以使用类似这样的东西(类似于默认的 wordpress 循环建议):
<?php if($condition_fullfilled) :?>
<p>Condition is fullfilled – there is a lot more html to come!</p>
.... (200 lines of html markup)
<?php else: ?>
<p>Nothing found, matching your conditions</p>
<?php endif; ?>
嗨,在 wordpress 网站上,我必须向特定用户输出特定内容,我的代码在下方,我的问题是如何避免重复重复行
if (is_user_logged_in() and get_current_user_id() != get_the_author_meta('ID')) {
if (in_array('customer', (array) $user->roles)) {
if (get_current_user_id() == $authorid) { ?>
<i class="fa fa-comments send_designer_msg" designer_id="<?php echo get_the_author_meta("ID"); ?>" logo_number="<?php echo $entryno; ?>" aria-hidden="true"></i>
<?php }
} else { ?>
<i class="fa fa-comments send_designer_msg" designer_id="<?php echo get_the_author_meta("ID"); ?>" logo_number="<?php echo $entryno; ?>" aria-hidden="true"></i>
<?php }
}
任何帮助谢谢
条件逻辑比较难理解
您想为评论显示一个图标(基于 fontAwesome)——仅适用于满足以下要求的登录用户:
- 不是这个post的'designer'。
- 具有角色'customer'
不确定,您的条件逻辑设置正确,因为它似乎为任何不是 'designer' 的用户输出评论标记...对不起 – 但是 [=54= 之间的区别在哪里] 和 designer_id?
稍微干一点的实现可能是这段代码:
<?php
$current_user_id = get_current_user_id();
$designer_id = get_the_author_meta("ID");
$author_id = '???';
$show_comment_icon = false;
if (is_user_logged_in() && $current_user_id != $designer_id ) {
// if user has role "customer"
if (in_array ('customer', (array)$user->roles)) {
// if currently logged in user is the author of the current post?
if ( $current_user_id == $author_id) {
$show_comment_icon = true;
}
} else {
// if user is not a "customer"
$show_comment_icon = true;
}
// comment icon html template
$comment_icon =
'<i
class="fa fa-comments send_designer_msg"
data-designer-id="'.$designer_id.'"
data-logo-number="'.$entry_no.'"
aria-hidden="true">
</i>';
// output your html
if($show_comment_icon){
echo $comment_icon;
}
}
?>
尽管这个修改后的代码片段肯定存在缺陷: php 中避免重复代码和提高可读性的一些建议:
- 选择合适的封闭概念(在php和html之间切换时)*
- 从输出中分离出'data compilation'和逻辑
- 慷慨地在代码中插入注释
- 在变量中保存重复查询的值(例如 functions/classes 返回)
- 最后努力修改你的代码(可能没有人会因为这种努力而奖励你——除了你自己,即使在几年后也能理解你的代码)
enclosing/switching 在 php 和 html 代码之间 您的代码有效。然而,易读性受到影响。 一个可行的经验法则是决定是使用相当封闭的 php-in-html 还是 html-in-php 是比例。
如果涉及更多 php 处理(条件、计算、过滤等),最好使用变量来定义您的 html 输出。
如果 html 模板部分占主导地位,您可以使用类似这样的东西(类似于默认的 wordpress 循环建议):
<?php if($condition_fullfilled) :?>
<p>Condition is fullfilled – there is a lot more html to come!</p>
.... (200 lines of html markup)
<?php else: ?>
<p>Nothing found, matching your conditions</p>
<?php endif; ?>