hola en un sitio web de wordpress tengo que enviar cierta cosa a cierto usuario mi código está debajo mi pregunta es cómo evitar esta duplicación de línea de eco
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 } }cualquier ayuda gracias
La lógica condicional es difícil de entender.
Desea mostrar un ícono (basado en fontAwesome) para comentarios, solo disponible para usuarios registrados que cumplan con los siguientes requisitos:
No estoy seguro, su lógica condicional está configurada correctamente, ya que parece generar el marcado de comentarios para cualquier usuario que no sea el 'diseñador'... disculpe, pero ¿dónde está la diferencia entre author_id y designer_id?
Una implementación un poco más SECA podría ser este código:
<?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; } } ?>Aunque este fragmento de código revisado ciertamente falla: algunas recomendaciones para evitar el código duplicado y mejorar la legibilidad en php:
encerrando/cambiando entre código php y html Su código es válido. Sin embargo, la legibilidad sufre. Una regla general factible para decidir si usar php-in-html o html-in-php más cerrado es la proporción.
Si hay más procesamiento de php involucrado (condiciones, cálculos, filtrado, etc.), mejor use una variable para definir su salida html.
Si la parte de la plantilla html es predominante, podría usar algo como esto (similar a la propuesta de bucle de wordpress predeterminada):
<?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; ?>