Отвечу на ваши вопросы по WordPress

W
На сайте с 21.01.2009
Offline
172
#1001
jcrush:
Хостинг конечно же меняться не будет, вообще на DLE я такое делал, просто кидал модрерайт в субдомен с редиректами на основной, значит и тут реально, но и за это спасибо.

Все таки не понял я до конца, что вы хотите сделать?

zex2
На сайте с 04.05.2009
Offline
109
#1002

Спасибо за тему. Есть пара вопросов. Хотелось бы изменить полный путь до админки, включая папку wp-admin, wp-login.. Теперь хочется узнать, очень ли гемморно это? Имеется ввиду, что будут ли какие либо траблы в будущем с установкой плагинов или обновлением? Или может есть другие, более простые способы защиты админки?

Также хотелось бы узнать, какой кусок кода нужно вытащить с движка, чтобы при просмотре сайта через ресурс cy-pr (к примеру) не показывалась какая CMS используется?

C
На сайте с 20.05.2011
Offline
14
#1003
Hixon10:
P.S. Поставил wordpress-popular-posts.2.1.4, обновил timthumb, плагин заработал. Пойду его встраивать в верстку.

недавно кому-то его переписывал под юникод, там просто суть в том, что он не считает хиты по постам, если кликает залогиненный юзер (админ, редактор и т.д.) можно выйти из ВП, покликать по постам и всё ок. Если нужна юникод версия, вот код:


function truncate($text, $length = 100, $ending = '...', $exact = true, $considerHtml = false) {
if ($considerHtml) {
// if the plain text is shorter than the maximum length, return the whole text
if (mb_strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
return $text;
}
// splits all html-tags to scanable lines
preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER);
$total_length = mb_strlen($ending);
$open_tags = array();
$truncate = '';
foreach ($lines as $line_matchings) {
// if there is any html-tag in this line, handle it and add it (uncounted) to the output
if (!empty($line_matchings[1])) {
// if it's an "empty element" with or without xhtml-conform closing slash (f.e. <br/>)
if (preg_match('/^<(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)>$/is', $line_matchings[1])) {
// do nothing
// if tag is a closing tag (f.e. </b>)
} else if (preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $line_matchings[1], $tag_matchings)) {
// delete tag from $open_tags list
$pos = array_search($tag_matchings[1], $open_tags);
if ($pos !== false) {
unset($open_tags[$pos]);
}
// if tag is an opening tag (f.e. <b>)
} else if (preg_match('/^<\s*([^\s>!]+).*?>$/s', $line_matchings[1], $tag_matchings)) {
// add tag to the beginning of $open_tags list
array_unshift($open_tags, strtolower($tag_matchings[1]));
}
// add html-tag to $truncate'd text
$truncate .= $line_matchings[1];
}
// calculate the length of the plain text part of the line; handle entities as one character
$content_length = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|***[0-9]{1,7};|***x[0-9a-f]{1,6};/i', ' ', $line_matchings[2]));
if ($total_length+$content_length> $length) {
// the number of characters which are left
$left = $length - $total_length;
$entities_length = 0;
// search for html entities
if (preg_match_all('/&[0-9a-z]{2,8};|***[0-9]{1,7};|***x[0-9a-f]{1,6};/i', $line_matchings[2], $entities, PREG_OFFSET_CAPTURE)) {
// calculate the real length of all entities in the legal range
foreach ($entities[0] as $entity) {
if ($entity[1]+1-$entities_length <= $left) {
$left--;
$entities_length += mb_strlen($entity[0]);
} else {
// no more characters left
break;
}
}
}
$truncate .= mb_substr($line_matchings[2], 0, $left+$entities_length);
// maximum lenght is reached, so get off the loop
break;
} else {
$truncate .= $line_matchings[2];
$total_length += $content_length;
}
// if the maximum length is reached, get off the loop
if($total_length>= $length) {
break;
}
}
} else {
if (mb_strlen($text) <= $length) {
return $text;
} else {
$truncate = mb_substr($text, 0, $length - mb_strlen($ending));
}
}
// if the words shouldn't be cut in the middle...
if (!$exact) {
// ...search the last occurance of a space...
$spacepos = mb_strrpos($truncate, ' ');
if (isset($spacepos)) {
// ...and cut the text in this position
$truncate = mb_substr($truncate, 0, $spacepos);
}
}
// add the defined ending to the text
$truncate .= $ending;
if($considerHtml) {
// close all unclosed html-tags
foreach ($open_tags as $tag) {
$truncate .= '</' . $tag . '>';
}
}
return $truncate;
}

то есть, меняем ф-цию truncate в файле wordpress-popular-posts.php на эту (эт для версии 2.1.5, просто я для этой переделывал, чем отличается 2.1.4 и 2.1.5 я честно сказать не интересовался, но эта ф-ция походу копипаст из другого исходника, о чём автор плагина явно и говорит в комментах, так думаю, должно работать). Если меняете код, то тогда это нужно делать после каждого обновления плагина, поэтому, я просто его форкнул. Отличии юникод версии от обычной - при указании кол-ва символов из тайтла и поста просто умножаете на 2 для не юникод версии (т.е. хотите 20 символов в тайтле поста - пишите 40), и второй недостаток не юникод версии - некоторые баги, если совместно используете плагин wp post rating (там юникод символ, состоящий из 2х байтов, обрезается как ascii и берётся только первый байт, из-за чего, в месте обрезки появляются всякий мусор, типа знак вопроса и прочие из ascii - chr того байта, который отрезали от юникод символа ;)

Hixon10
На сайте с 21.08.2010
Offline
125
#1004

cryptex, спасибо за функцию, я её уже сам переписал, все работает. Остался последний шаг в реализации моей идеи (самые просматриваемые посты с миниатюрами в моей верстки) - вставить всё в верстку.

Получаю интересующие меня посты с помощью данного плагина:

$myposts = get_posts('include='.$str);

$str="40,36,22,20,18,14", например.

Мне нужно 6 раз использовать функции такие, как the_title(), the_permalink(), kama_thumb_src() (функция другого плагина), the_excerpt(). Однако, я не могу использовать цикл foreach, то есть, такая конструкция мне недоступна:


<?php $myposts2 = get_posts('numberposts=2');
foreach($myposts2 as $post) :
setup_postdata($post); ?>
<div class="preview2">
<img class="img_preview" src="<?php echo kama_thumb_src ('w=120 &h=80 &q=75'); ?>" alt="" width="120" height="80" title="" />
<div class="text_preview3">
<a class="link_preview" href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php the_excerpt(); ?>
</div>
</div>
<?php endforeach; ?>

Вопрос - как можно получить доступ к этим функциям?

Пробовал так:


$result = $myposts[0];
$result->the_post();
the_title();
//данный вариант не работает
$result = $myposts[0];
$result->the_title();
//данный вариант не работает

P.S. Поставил бы вам плюс, но нельзя.

Веду свой невзрачный блог (http://hixon.ru/).
Людмила Лисаева
На сайте с 16.08.2008
Offline
132
#1005

Поставила тему. Чтобы поставить свое лого в админке надо ввести урл.

Пытаюсь понять, как этот урл добыть...

Помогите, пожалуйста!

Скриншоты нормального размера тоже не умею делать катастрофически.

Не обессудьте.

zex2
На сайте с 04.05.2009
Offline
109
#1006
Людмила Лисаева:
как этот урл добыть...

Кидай лого в папку с шаблоном, потом в графу всписывай путь, который ведет до твоего лого и все.

Hixon10
На сайте с 21.08.2010
Offline
125
#1007

Людмила Лисаева, медиафайлы->добавить новый->выбрать файл->загрузить файл-> нас скрипт редиректит (перемещает) на wp-admin/upload.php, -> выбираем первый файл, который мы только загрузили, жмём по названию этого файла, видим пункт в форме Ссылка на файл, эта ссылка и есть наш искомый url.

---

Пока писал ответ, уже ответили...

zex2
На сайте с 04.05.2009
Offline
109
#1008

Hixon10, зачем лого загружать в папку uploads, когда оно должно лежать в папке с шаблоном?

ps: Людмила Лисаева, просто берёте и загружаете ваше лого в папку с вашей установленной темой, затем прописываете в настройках темы путь до вашего лого.

Пример: http://мой_сайт/wp-content/themes/моя_темя/logo.png

Hixon10
На сайте с 21.08.2010
Offline
125
#1009

zex2, где написано, что оно должно(!) лежать в папке с темой? В каком-то неведомом стандарте? Думаю, что нет.

Не поймите меня неправильно, я не говорю, что если лого будет лежать в корневой директории темы, то это плохо, но ведь, если оно будет лежать в иной папки, то ничего не измениться? Да и я не знаю, умеет ли Людмила Лисаева пользоваться фтп клиентом, для того чтобы залить лого в корневую директорию шаблона.

Людмила Лисаева
На сайте с 16.08.2008
Offline
132
#1010
Hixon10:
Людмила Лисаева, медиафайлы->добавить новый->выбрать файл->загрузить файл-> нас скрипт редиректит (перемещает) на wp-admin/upload.php, -> выбираем первый файл, который мы только загрузили, жмём по названию этого файла, видим пункт в форме Ссылка на файл, эта ссылка и есть наш искомый url.


---
Пока писал ответ, уже ответили...

Спасибо огромное!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий