2015-06-27 2 views
0

В настоящее время я создаю тему для Wordpress, но я попал в блокнот так близко к завершению!Использовать PHP для добавления класса к элементам

Я использую настраиваемое поле комментариев, и оно завернуто в контейнер с его стилем. Однако этот контейнер построен так:

Вызывается основной шаблон

<?php comments_template();?> 

Внутри comments.php, которая существует в каталоге моей темы в

<div class="tweleve columns row mytheme-box mytheme-body mytheme-form"> 
<?php if (have_comments()): ?> 
    <h4 id="comments"><?php comments_number('No Comments','One Comment','% Comments');?></h4> 
    <ol class="comment-list"> 
    <?php wp_list_comments('callback=custom_comments');?> 
    </ol> 
<?php endif;?> 


<?php 
$comments_args = array(
    'label_submit'=>'Submit Comment', 
    'title_reply'=>'Leave us a comment!', 
    'comment_notes_after' => '',); 
    comment_form($comments_args); ?> 
    </div> 

MyTheme коробка превращает div в коробку с небольшой тенью, радиус границы и т. д.

стили MyTheme-тело текст в

MyTheme-формы является уникальным для укладки в форму.

двенадцать колонн строка стайлинг из каркаса каркасного

Внутри файл functions.php

function custom_comments ($comment, $args, $depth) { 
$GLOBALS['comment'] = $comment; ?> 
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>"> 
    <div id="comment-<?php comment_ID(); ?>"> 
     <header class="comment-header"> 
      <?php echo get_avatar($comment,$size='48',$default='<path_to_url>'); ?> 
      <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?> 

       <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars(get_comment_link($comment->comment_ID)) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(), get_comment_time())?></a><?php edit_comment_link(__('(Modify)'),' ','')?></div> 
     </header> 
      <br> 
      <?php if ($comment->comment_approved == '0') : ?> 
      <em><?php _e('Your comment is pending approval.') ?></em> 
      <?php endif; ?> 
<?php comment_text()?> 

<div class="reply"> 
    <?php comment_reply_link(array_merge($args, array('depth'=>$depth, 'max_depth'=> $args['max_depth']))) ?> 
    </div> 
    </div> 
    <hr> 
    <?php 
} 

Это все хорошо, у меня нет никаких проблем с любой вещью здесь. Единственная проблема, с которой я столкнулся, - это создать div, чтобы обернуть все комментарии, связанные с которыми происходит, что обертывает код в комментариях.php. Я делаю это, потому что не хочу прикоснуться к файлам/wp-includes, даже если в них есть comment_template.php, где я хотел бы придерживаться стилей mytheme-body, box и form, так как это происходит там, где это делается.

Причина в том, что, когда я перехожу к Wordpress и отключу комментарии для страницы, у меня остается пустое поле, где используются комментарии, и это очень раздражает. Я могу что-то сделать, чтобы это исправить?

Возможно ли присвоить дополнительные классы только одному уже созданному элементу? Могу ли я полностью создать свой собственный comment_template.php и не полагаться на основной?

ответ

1

Вы должны использовать другое условие, которое проверяет, включены ли комментарии. Этого можно достичь с помощью условного тега comments_open.

В файле comments.php выше открытия div оных:

if(comments_open()): 

    //All of your code here 
    ... 
    ... 
    ... 

endif; //Use `else` if you want to show a notification. 
+0

Вы сэр! - Спасибо! Я явно старался сделать это слишком сложным, и ты просто сделал это намного лучше для меня :) – LukeScotney93