Как заменить заголовок в span обычным текстом и именем пользователя (или именем diplay) на PHP - PullRequest
0 голосов
/ 17 февраля 2020

Вот моя ситуация.

Я использую плоскую тему с woocommerce. В настройщике тем я могу просто установить флажки, чтобы заголовок учетной записи отображал «Вход / Регистрация» перед входом в систему и отображал отображаемое имя (ТЕСТ на рисунке) после входа в систему. https://imgur.com/7tekdTo https://imgur.com/dYWQg75

Эти параметры корректно работают на настольном компьютере, но на мобильном сайте это не так. Эти параметры не применяются. Я считаю, что мой единственный выбор здесь JavaScript. Но я почти ничего не знаю о HTML и JavaScript. https://imgur.com/p6Tn7Ig https://imgur.com/0i1tCkB

Мой вопрос здесь

  1. Как я могу изменить Логин на Вход / Регистрация перед входом в систему mobile.
  2. Как сделать так, чтобы после входа в систему на мобильном телефоне отображалось отображаемое имя вместо Моей учетной записи.

Я действительно хочу сэкономить, поэтому плагин не подходит для меня. Я также предпочитаю этот заголовок по умолчанию, потому что, создавая пользовательское меню, я не могу использовать всплывающий экран входа / регистрации. Я выполнил поиск в Интернете, и пока ни одно из решений не работает.

Это мои элементы упомянутого заголовка учетной записи.

Перед входом в систему.

<a href="https://www.mywebsite.com/my-account/" class="nav-top-link nav-top-not-logged-in " data-open="#login-form-popup">
<span>
Login / Register </span>
</a>

После входа в систему .

<a href="https://www.mywebsite.com/my-account/" class="account-link account-login
  " title="My account">

            <span class="header-account-title">
        test        </span>
</a>

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Пока я нашел временное решение для моего первого вопроса. Я использую дополнительный CSS для замены текста.

.nav-top-link.nav-top-not-logged-in  span {
  display: none;
}
.nav-top-link.nav-top-not-logged-in:after {
  content: 'Login / Register';
}

Где nav-top-link nav-top-not-logged-это класс заголовка перед входом в систему.

Кроме того, я немного покопался и нашел файлы. Для этого есть 2 файла. Похоже, что в теме используются 2 разных кода для десктопа и мобильного. (/ wp-content / themes / flatsome / template-parts / header / partials)

Существует 1 файл с именем element-account. php.

<?php $icon_style = get_theme_mod('account_icon_style'); ?>
<?php if(is_woocommerce_activated()){ ?>
<li class="account-item has-icon
  <?php if(is_account_page()) echo ' active'; ?>
  <?php if ( is_user_logged_in() ) { ?> has-dropdown<?php } ?>"
>
<?php if($icon_style && $icon_style !== 'image' && $icon_style !== 'plain') echo '<div class="header-button">'; ?>

<?php if ( is_user_logged_in() ) { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" class="account-link account-login
  <?php if($icon_style && $icon_style !== 'image') echo get_flatsome_icon_class($icon_style, 'small'); ?>"
  title="<?php _e('My account', 'woocommerce'); ?>">

    <?php if ( get_theme_mod( 'header_account_title', 1 ) ) { ?>
        <span class="header-account-title">
        <?php
        if ( get_theme_mod( 'header_account_username' ) ) {
            $current_user = wp_get_current_user();
            echo esc_html( $current_user->display_name );
        } else {
            esc_html_e( 'My account', 'woocommerce' );
        }
        ?>
        </span>
    <?php } ?>

  <?php if($icon_style == 'image'){
    echo '<i class="image-icon circle">'.get_avatar(get_current_user_id()).'</i>';
   } else  if($icon_style){
    echo get_flatsome_icon('icon-user');
   } ?>

</a><!-- .account-link -->

<?php } else { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>"
    class="nav-top-link nav-top-not-logged-in <?php if($icon_style && $icon_style !== 'image') echo get_flatsome_icon_class($icon_style, 'small'); ?>"
    <?php if( get_theme_mod('account_login_style','lightbox') == 'lightbox' && !is_checkout() && !is_account_page() ) echo 'data-open="#login-form-popup"'; ?>
  >
  <?php if(get_theme_mod('header_account_title', 1)) { ?>
  <span>
    <?php _e('Login', 'woocommerce'); ?>
    <?php if(get_theme_mod('header_account_register')){
        echo ' / '.__('Register', 'woocommerce');
      } ?>
  </span>
  <?php } else {
        echo get_flatsome_icon('icon-user');
    } ?>

</a><!-- .account-login-link -->
<?php } ?>

<?php if($icon_style && $icon_style !== 'image' && $icon_style !== 'plain') echo '</div>'; ?>

<?php
// Show Dropdown for logged in users
if ( is_user_logged_in() ) { ?>
<ul class="nav-dropdown  <?php flatsome_dropdown_classes(); ?>">
    <?php wc_get_template('myaccount/account-links.php'); ?>
</ul>
<?php } ?>

</li>
<?php } else {
    fl_header_element_error( 'woocommerce' );
}
?>

И еще один файл с именем element-account-mobile. php

<?php $icon_style = flatsome_option('account_icon_style'); ?>
<li class="account-item has-icon">
<?php if($icon_style && $icon_style !== 'image' && $icon_style !== 'plain') echo '<div class="header-button">'; ?>
    <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>"
    class="account-link-mobile <?php echo get_flatsome_icon_class($icon_style, 'small');?>" title="<?php _e('My account', 'woocommerce'); ?>">
      <?php echo get_flatsome_icon('icon-user'); ?>
    </a><!-- .account-link -->
<?php if($icon_style && $icon_style !== 'image' && $icon_style !== 'plain') echo '</div>'; ?>
</li>
0 голосов
/ 17 февраля 2020

@ MihaiT прав. Копайтесь вокруг.

Очень сложно разобраться со спецификой, потому что вы используете конструктор, так как в настройках есть так много переменных. Но все темы используют заголовок. php для отображения того, что является единым для всех заголовков, в частности, для входа / выхода из системы. Вы можете взглянуть на свой заголовок. php и поиграть с чем-то вроде этого:

<?php global $current_user; wp_get_current_user(); ?>

<?php if ( is_user_logged_in() ) { ?>

<div class="account-details">
    <p class="username">Welcome back <?php echo $current_user->display_name; ?></p>
    <a href="<?php echo wp_logout_url( get_permalink() ); ?>">&nbsp;|&nbsp;Logout</a>
</div>


 <?php } else { ?>

 <div class="account-details">
    <a href="/login/">Login&nbsp;|</a>
    <a href="/register/">&nbsp;Register</a> 
</div>

 <?php } ?>

Вам нужно будет внести любые изменения в дочернюю тему , чтобы не перезаписывать изменения, внесенные вами в обновление темы. Если у вас нет намерения когда-либо создавать собственную тему, то, возможно, этот подход не для вас, и лучше всего обратиться к разработчикам тем за поддержкой. Большая проблема с темами и компоновщиками в тот момент, когда вам нужно что-то, что не включено, вы находитесь в рассоле.

В приведенном выше коде используется базовый c if / else и функция wordpress, которая обнаруживает, если пользователь вошел в систему. Поскольку вы запускаете это на серверной стороне, у вас есть доступ к полезным данным, таким как имя пользователя. Вам нужно выяснить ссылки для входа / выхода, но это общая теория.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...