Взломы WordPress для веб-сайта только для членов
Опубликовано: 2020-05-19По умолчанию WordPress является инструментом для ведения блога. Тем не менее, вы действительно можете настроить его так, как хотите. Многие люди используют WordPress для создания веб-сайта только для членов.
Вы всегда можете использовать плагин, но если вам нужна лишь небольшая модификация, зачем устанавливать плагин, если вы можете сделать это с помощью нескольких строк кода. Вот несколько простых, но эффективных лайфхаков для создания сайта только для членов.
Контент только для членов без плагина
Если на вашем сайте есть определенный контент, который вы хотите показать только зарегистрированному участнику, вы можете сделать это, используя следующий код в своей теме. Все, что находится между is_user_logged_in
, будет видно только участникам.
<?php if ( is_user_logged_in() ) { ?> // Content for Logged in user <?php } else {?> // Content for everyone else <?php }?>
Показывайте форму входа в WordPress в любом месте и настраивайте ее
Если вы хотите включить форму входа в WordPress где-нибудь в своей теме, вы можете сделать это с помощью следующей функции:
<?php ks29so_login_form(); ?>
Однако он не дает вам возможности настроить форму входа в систему, потому что он просто напрямую извлекает форму входа в WordPress по умолчанию. Что, если вы хотите показать что-то подобное?
Вот код для этого. Вставьте следующий код туда, где вы хотите, чтобы форма отображалась.
// WordPress Login Form <?php if (!(current_user_can(‘level_0′))){ ?> <h3>Member Login</h3> <form action="<?php echo get_option(‘home’); ?>/wp-login.php" method="post"> <table width=’100%’ cellspacing="0" cellpadding="0"> <tr> <td> <label><?php _e( ‘Username’ ) ?></label> <input type="text" name="log" class="input" value="<?php echo attribute_escape(stripslashes($user_login)); ?>" /> </td> <td> <label><?php _e( ‘Password’ ) ?></label> <input type="password" name="pwd" class="input" value="" /> </td> </tr> <tr> <td colspan="2"><?php do_action(‘login_form’); ?> </td> </tr> <tr> <td> <a href="<?php echo site_url(‘wp-login.php?action=lostpassword’, ‘login’) ?>" title="<?php _e(‘Password Lost and Found’) ?>"><?php _e(‘Forgot Password?’) ?></a> </td> <td> <input type="submit" name="submit" value="Log In" class="button" /> <input type="hidden" name="redirect_to" value="http://<?php echo $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] ?>" /> </td> </tr> </table> </form> <?php } else { ?> <!– When User logged in Show the following info –> <h2>Logout</h2> <?php get_currentuserinfo();?> Welcome Back  <?php echo($current_user->user_login . " ");?><br /> <a href="<?php echo ks29so_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">Logout</a><br /> <a href="<?php echo get_admin_url(); ?>">Admin?</a><!– If you are admin goes to admin dashboard –> <?php }?>
Вы можете добавить тег div CSS, чтобы стилизовать его. Преимущество использования этой формы входа в систему заключается в том, что вы можете практически создать мини-панель для участников с помощью функции get_currentuserinfo() и показать любую информацию о пользователе.
Пользовательское меню WordPress для участников
Как и контент, вы можете создать собственное меню WordPress для участников. Давайте сначала зарегистрируем меню. Перейдите к файлу функций вашей темы (functions.php). Используйте следующий код для регистрации меню.
register_nav_menus( array( ‘primary’ => __( ‘Primary Navigation’, ‘twentyten’ ), ‘visitor’ => __( ‘Visitor Navigation’, ‘twentyten’ ), ‘footer’ => __( ‘Footer Navigation’, ‘twentyten’ ), ) );
Теперь поместите следующий код туда, где вы хотите, чтобы ваше меню отображалось, скорее всего, в файле header.php.
<?php if ( is_user_logged_in() ) { ks29so_nav_menu( array( ‘container_class’ => ‘menu-header’, ‘theme_location’ => ‘primary’ ) ); } else { ks29so_nav_menu( array( ‘container_class’ => ‘menu-header’, ‘theme_location’ => ‘visitor’ ) ); };?>
Теперь вам нужно фактически создать меню в WordPress. Параметр «Меню» должен находиться на вкладке «Внешний вид». Создайте меню с названием основное и посетительское. В обоих меню добавьте все, что хотите показать. Например: если вы хотите, чтобы страница отображалась только при входе пользователя в систему, добавьте ее в главное меню.
Вы также можете создать динамическое меню нижнего колонтитула, используя тот же метод.
Пользовательские поля WordPress и хаки для блоггеров
Вы можете использовать WordPress для создания индивидуального и профессионально выглядящего веб-сайта. В этом посте мы поделимся некоторыми трюками и хаками с пользовательскими полями WordPress, которые позволят вам улучшить сайт на базе WordPress.
Иногда могут быть гостевые блоггеры, которые пишут только один пост на вашем сайте и все. Вы можете использовать этот метод для отображения обычной информации об авторе. Имейте в виду, что автор зарегистрирован в WordPress. Возможно, вы не хотите регистрироваться каждый раз, когда пишут новые приглашенные авторы. Но как сделать так, чтобы информация о гостевом авторе отображалась в том же формате, что и обычный автор? Настраиваемые поля!
Имя приглашенного автора на главной странице и в отдельных сообщениях
Первое, что нам нужно сделать, это установить оператор WordPress if, чтобы получить значение настраиваемого поля. Таким образом, он будет отображаться только при назначении пользовательского значения файла. Откройте ваши «index.php» и «single.php» и вставьте следующий код туда, где вы хотите, чтобы отображалось имя автора. Это может быть после даты или после комментариев. Например, после этого кода:
<?php the_time(‘M j, Y’) ?>
< ?php if ( get_post_meta($post->ID, 'guest_author_name', true) ) { ?> // check to see if custom field guest author name exists < ?php echo get_post_meta($post->ID, "guest_author_name", $single = true); ?> < ?php } ?>\
После того, как мы поместили оператор if, мы просто вызываем его для любого сообщения, которое мы хотим, чтобы отображалось имя приглашенного автора. Имя приглашенного автора должно отображаться на главной странице и только для определенного сообщения.
Блок информации о гостевом авторе в отдельном сообщении
Итак, у нас есть имя, отображаемое в мета-описании поста, но некоторая информация о приглашенном авторе также была бы неплохой.
Опять же, сначала у нас есть условный оператор if, который ищет миниатюру изображения автора и описание. Не забудьте изменить изображение каталога. Также к блоку и тумбе мы прикрепили класс, который позволяет стилизовать как изображение, так и блок с помощью CSS.
<?php if ( get_post_meta($post->ID, ‘autho_thumb’, true) ) { ?> // checks to see if the custom field exist <div class="writer_bio"> <img class="autho_thumb" src="http://media.webdesignviews.com/author/<?php $values = get_post_custom_values("autho_thumb"); echo $values[0]; ?>" alt="Author Thumb" width="60" width="60" height="60" /><?php } ? <?php if ( get_post_meta($post->ID, ‘guest_author’, true) ) { ?> <?php echo get_post_meta($post->ID, "guest_author", $single = true); ?></div> <?php } ?>
Вот CSS, который я использовал
.writer_bio { color: #666; background: #eee; text-transform: none !important; font-size: 13px; font-weight: normal; height: 75px; width: 600px; padding: 6px; padding-bottom: 6px; padding-left: 0; margin-bottom: 10px; } .writer_bio img { padding: 0 !important; float: left !important; margin-left: 4px !important; margin-top: 3px !important; border: 2px #ccc solid !important; height: 60px; }
С классом autho_thumb вы даже больше стилизуете. Как только это будет сделано, все, что вам нужно сделать, это добавить autho_thumb и guest_author в поле и заполнить информацию. Вы даже можете добавить HTML, например, ссылку в настраиваемое поле.
Итак, у вас есть два настраиваемых поля для информации о приглашенном авторе. Может показаться, что это много шагов. Поверьте мне, как только вы это сделаете, это просто вопрос добавления изображения и описания в следующий раз, когда вы захотите это сделать.
Лучшее настраиваемое поле для отображения изображения сообщения на главной странице
Этот метод используется для отображения большого пальца для сообщения на переднем плане. Я хотел пойти немного дальше и упростить интерфейс для пользователя. Кроме того, с методом Жана все изображения будут иметь один и тот же alt=”post-image” и я могу не подойти для поисковых систем. Кроме того, вам придется каждый раз указывать полный URL-адрес для изображений. Во-первых, вот код:
<?php $postimageurl = get_post_meta($post->ID, ‘post-img’, true); // variable for image $image_alt = get_post_meta($post->ID, ‘post-img’, true);// variable for description // check if the the custom field is called if ($postimageurl) { ?> <a href="<?php the_permalink(); ?>" rel="bookmark"><img src="<?php echo $postimageurl; ?>" class= quot;post-img" alt="<?php echo $image_alt; ?>"; width="500" height="300" /></a> <?php } else { ?>
Прежде чем я объясню код, обратите внимание, что я не добавил оператор else для большого пальца по умолчанию. Посмотрите сообщение Жана, если вы хотите иметь изображение по умолчанию, если оно назначено в пользовательском поле.
Сначала у нас есть две переменные $postimageurl и $image_alt. Первый — получить местоположение изображения, а второй — добавить имя изображения. Затем снова мы устанавливаем оператор if, чтобы проверить, вызывается ли пользовательское поле.
<?php echo get_option(‘siteurl’).‘/wp-content/uploads/thumb/’?>
Другое дело — вышеприведенный код, который получает местоположение изображения. Я создал папку с именем thumb в своем каталоге загрузки WordPress, поэтому вместо того, чтобы каждый раз вводить полный URL-адрес, я просто вводил имя изображения после загрузки изображения в папку.
Если вам нужен другой каталог, например, вы будете хранить свои изображения в корне вашего домена, просто замените <?php echo get_option('siteurl').'/wp-content/uploads/thumb/ ?><?php echo $postimageurl; ?>
<?php echo get_option('siteurl').'/wp-content/uploads/thumb/ ?><?php echo $postimageurl; ?>
с http://yourwebsite.com/images/<?php echo $postimageurl; ?>
http://yourwebsite.com/images/<?php echo $postimageurl; ?>
.
Итак, код немного изменен, поэтому каждое изображение сообщения будет иметь другой alt (заголовок), и вы будете вводить расширение имени изображения, а не полный URL-адрес.
Организуйте навигацию WordPress, как хотите
Первое, что нужно знать, это страницы списка WordPress, использующие тег ks29so_list_pages, который обычно находится в header.php. но вы можете не захотеть перечислять все свои страницы. Если вы хотите скрыть некоторые из ваших страниц от отображения, вы должны сделать это:
<?php ks29so_list_pages(‘include=7,13′ ); ?> //or <?php ks29so_list_pages(‘exclude=5,9′);? >
Исключить или включить работает почти так же. Exclude исключит определенные страницы из списка страниц WordPress и включит отображение только указанных вами идентификаторов страниц. Тем не менее, большинство блогов веб-дизайна или любых других блогов любят использовать теги или категории в качестве навигации. В этом случае вы можете просто избавиться от тега ks29so_list и настроить код навигации. Кроме того, вы можете сделать это и со своими тегами. Преимущество такого кодирования в том, что вы можете назначить класс CSS для стиля каждого элемента навигации.
Недавно мне пришлось найти идентификатор страницы для исключения в шаблоне, который я использовал, и примерно через 10 минут, наконец, нашел простой способ найти идентификатор страницы «страницы» WordPress.
Я считаю, что в старых версиях WordPress это было проще, но вот как вы можете это сделать сейчас.
- Войдите в панель администратора WordPress, затем перейдите в Страницы.
- Затем наведите указатель мыши на страницу, идентификатор которой вы хотите узнать.
- Вы увидите идентификатор в строке состояния в нижней части браузера (см. ниже).
Если вы не видите полный адрес, попробуйте другой способ (далее ниже).
- Войдите в панель администратора WordPress, затем перейдите в Страницы.
- Затем вы увидите идентификатор в адресной строке. Это будет число после знака равенства.
- Нажмите на страницу, идентификатор которой вы хотите узнать.
Отображение темы архива
Большинство тем WordPress поставляется со страницей archive.php. Но я видел много веб-сайтов, где страницы архива не очень полезны и не сообщают пользователям, какую тему или категории они просматривают. Вы можете добавить следующие коды в свой archive.php, чтобы избежать путаницы.
<?php /* If this is a category archive */ if (is_category()) { ?> <h3 class="pagetitle">Current Browsing Topic: ‘<?php single_cat_title(); ?>’</h3> <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?> <h3 class="pagetitle">Posts Tagged ‘<?php single_tag_title(); ?>’</h3>