Flector

почему работает comments/page/x?

проверил свои блоги, везде, если добавить http://www.blog.ru/comments/page/5, где 5 номер страницы не выдается ошибка 404, а показывается тот же
контент, что при http://www.blog.ru/page/5
я не пойму – откуда это и почему?
неприятно это мне тем, что в индекс яндекса попали страницы именно с /comments/ и не хотят оттуда уходить.

разбирается кто в mysql?

есть такой mysql код:

SELECT wp_users.ID, wp_users.user_login
FROM  wp_users
    LEFT JOIN wp_posts ON wp_users.ID = wp_posts.post_author 
    LEFT JOIN wp_comments ON wp_users.ID  = wp_comments.user_id
    LEFT JOIN wp_usermeta ON wp_users.ID  = wp_usermeta.user_id
WHERE wp_posts.post_author is NULL
AND wp_comments.user_id is NULL    
AND wp_usermeta.meta_key = 'wp_capabilities'
AND LOCATE('administrator', wp_usermeta.meta_value) = 0
AND LOCATE('editor', wp_usermeta.meta_value) = 0 
AND LOCATE('author', wp_usermeta.meta_value) = 0 
AND LOCATE('contributor', wp_usermeta.meta_value) = 0

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

сам код взят из плагина Clean Up Users, который почему-то работает у меня на localhost, но отказывается
работать у хостера. может кто объяснит причину?
или дайте ссылку на любой плагин, способный удалить неактивных зарегистрированных юзеров – как ни странно
я такого плагина найти не смог ((

<?php
/*
Plugin Name: Clean Up Users
Plugin URI: http://www.dagondesign.com/articles/clean-up-users-plugin-for-wordpress/
Description: Removes registered users that have no posts or comments
Author: Dagon Design
Version: 1.0
Author URI: http://www.dagondesign.com/
*/


$ddcuu_version = '1.0';

function ddcuu_add_options_pages() {
    if (function_exists('add_options_page')) {
        add_options_page("Clean Up Users", 'DDCleanUpUsers', 8, __FILE__, 'ddcuu_options_page');
    }        
}

function ddcuu_options_page() {

    // user roles
    $skip_admins = TRUE;
    $skip_editors = TRUE;
    $skip_authors = TRUE;
    $skip_contributors = TRUE;


    global $wpdb, $dddu_version;
    $tp = $wpdb->prefix;


    $result = "";

    if (isset($_POST['info_update'])) {

        // start processing

        ?><div id="message" class="updated fade"><p><strong><?php 

        echo "Action Complete - View Results Below";

        ?></strong></p></div><?php


        $result = '';

        $dddu_confirm = (bool)$_POST['dddu_confirm'];



        if ($dddu_confirm) {

            $skip_check = '';
            if ($skip_admins) $skip_check .= " AND LOCATE('administrator', {$tp}usermeta.meta_value) = 0 ";
            if ($skip_editors) $skip_check .= " AND LOCATE('editor', {$tp}usermeta.meta_value) = 0 ";
            if ($skip_authors) $skip_check .= " AND LOCATE('author', {$tp}usermeta.meta_value) = 0 ";
            if ($skip_contributors) $skip_check .= " AND LOCATE('contributor', {$tp}usermeta.meta_value) = 0 ";

            // list of users with no posts and no comments
            $userlist = (array)$wpdb->get_results("
                SELECT {$tp}users.ID, {$tp}users.user_login
                FROM  {$tp}users
                    LEFT JOIN {$tp}posts ON {$tp}users.ID = {$tp}posts.post_author 
                    LEFT JOIN {$tp}comments ON {$tp}users.ID  = {$tp}comments.user_id
                    LEFT JOIN {$tp}usermeta ON {$tp}users.ID  = {$tp}usermeta.user_id
                WHERE {$tp}posts.post_author is NULL
                AND {$tp}comments.user_id is NULL    
                AND {$tp}usermeta.meta_key = 'wp_capabilities'
                {$skip_check}            
            ");

            foreach ($userlist as $u) {
                wp_delete_user($u->ID);
            }

            $result = 'Users deleted: ' . count($userlist);



        } else {

            $result = 'No option selected!';

        }



        // end processing


    } ?>

    <div class=wrap>

    <h2>Clean Up Users v<?php echo $dddu_version; ?></h2>

    <p>For information and updates, please visit:<br />
    <a href="http://www.dagondesign.com/articles/clean-up-users-plugin-for-wordpress/">http://www.dagondesign.com/articles/clean-up-users-plugin-for-wordpress/</a></p>

    <?php 

    if ($result != "") { 
        echo '<div style="border: 1px solid #888888; padding: 5px;">';
        echo '<strong>Results</strong>:<br /> ' . trim($result) . '</div>';
    } 

    ?>


    <form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>"  >
    <input type="hidden" name="info_update" id="info_update" value="true" />


    <div style="padding: 0 0 15px 12px;">

        <?php print $formatinfo; ?>
        <h3>Options</h3>
        <input type="checkbox" name="dddu_confirm" id="dddu_confirm" /> 
        Delete users with no comments or posts
    </div>


    <div class="submit">
        <input type="submit" name="info_update" value="Submit" />
    </div>
    </form>
    </div><?php
}


add_action('admin_menu', 'ddcuu_add_options_pages');

?>

функция преобразования ссылок

напомните мне какой фильтр в WP надо отрубить, чтобы он не делал из www.site.ru ссылку http://www.site.ru
помню где-то это тут обсуждалось, но найти что-то так сразу не смог.

перенаправление с site.ru на www.site.ru

как сделать? перепробовал различные варианты вроде:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

или

RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule (.*) http://%1/$1 [R=301,L]

но они не хотят работать, я по прежнему могу открыть сайт в браузере без www
полагаю проблема в коде .htaccess, который создал сам WordPress, может он конфликтует, не знаю.
есть выход?

Плагин для предпросмотра шаблонов

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

меня лично такая ситуация до чертиков бесила, когда я хотел найти себе подходящий шаблон – открывать предпросмотр шаблонов по одному очень утомительно.

есть ли хоть один плагин, не использующий куки для запоминания шаблона для предпросмотра?

отложенная публикация

в какую сторону копать по поводу неработающей отложенной публикации? поиском не нашел. счетчик доходит до 1 минуты и начинает вместо публикации записи считать в обратную сторону, увеличивая число минут.
так и висит в управлении "9 минут до публикации" и число увеличивается.

капча

увидел капчу на http://zarabotai.lv/ru/blog/google-soshel-s-uma/
и влюбился )) писец, просто замечательная капча. но она написано вручную и не для вордпресса.
никто не встречал плагинов, реализующих что-нибудь похожее? чтобы посетитель должен был выбрать картинку, но никоим образом не вводил что-либо?

Обновление плагина BBCode

подскажите новичку в WP, что я сделал не так?
подробно описал на http://www.wordpressplugins.ru/comments/bbcode-rabochaya-versiya.html

кратко – WP предложил обновить плагин BBCode, я его обновил, проверил его работу и выяснил, что он не работает. стал искать старую версию и увидел в бекапе, что раньше оказывается у меня был другой BBCode, только вот я его обновил по просьбе WordPress и получил совершенно другой плагин, неработающий.

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

возможность хулиганства

администратор в вордпрессе всегда admin, поэтому почти любой блогер ставит ник и показывает именно его. теперь регистрируемся на блоге под любым левым ником, заходим в свой профиль и меняем свой ник на ник, который использует владелец блога. для полноты картины еще и меняем свой имейл на имейл владельца блога (как правило он засвечен в контактах или еще где-нибудь). теперь идем и пишем комментарии от своего имени – забавно, но внешне ваш комментарий теперь выглядит как комментарий админа блога – он выделен цветом (если тема поддерживает выделение комментария автора поста), там показан ник админа и там даже показывается граватар админа (имейл то мы сменили на админский).

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

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

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

форматирование текста вордпресом

публикую запись, есть там текст вроде этого:

<p>текст
<br />текст
<br />текст
<br />текст</p>

сохраняю, смотрю запись – в исходнике

<p>текст</p>
<p>текст</p>
<p>текст</p>
<p>текст</p>

опять открываю в запись в вордпрессе – там текст с <br /> (визуальный редактор в WP отключен)
пробовал отключить все плагины – не помогает.
с чего вдруг WP форматирует текст, набранный не визуальным редактором и при отключенной опции исправлять некорректный xhtml-код?

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

db_feedburner_address;

видел в одной теме такой вот код

<?php if($db_feedburner_address) { echo $db_feedburner_address; } else { bloginfo('rss2_url'); } ?>

думал, что он отдает ссылку на фидберн фид, если тот существует. создал я такой фид, настроил перенаправление через соответствующий плагин – но по-прежнему отдается стандартный фид. эта фишка как-то не так работает как я думал? или она вообще не связана с этим плагином – Feedburner Feed Replacement?

Simple Tags – не работает AJAX в админке и русский перевод

2 сайта на localhost

http://localhost/site1/
http://localhost/site2/

на обоих WP2.5.1
на первом сайте SimpleTags в админке с AJAX и русским переводом, на втором нет.
настройки, файлы дистрибутивов – все одинаковое. сносил плагин, ставил заново, ставил плагин с официального сайта и с сайта кактуса, чистил базу mysql – все без толку, ну не хочет работать AJAX и русский перевод в админке и все тут. я бы пережил это неудобство – но плин, если в этом плане он неправильно себя ведет, то мало какие еще сюрпризы он может преподнести. да и в чем разница между двумя одинаковыми сайтами, 3 часа возился – так ни хрена понять и не могу.

обработка 404 ошибки

есть код в archive.php

    <?php if (have_posts()) : ?>    
    <?php while (have_posts()) : the_post(); ?>
    
    вырезано<?php the_content(__('Читать дальше..'));?>вырезано
    
    <?php endwhile; ?>

    
    <!-- do not delete-->
    <?php else : ?>

    <h2>Извините, категория пока еще пуста.</h2>
    <p>Здесь пока еще ничего нет, заходите позже.</p>

    <!--do not delete-->
    <?php endif; ?>

то есть если нет постов в категории, то должна быть показана эта ошибка. 2 вопроса мне непонятных:

1. почему если в категории нет постов, то показывается ошибка из index.php, а не из archive.php? это же нелогично, я думал при просмотре категории вызывается archive.php, а не index.php

2. если положить в корень файл 404.php, то он вообще перекрывает действие всех файлов и index.php и archive.php – какой тогда смысл в обработке <?php else : ?> – ошибка? весь текст обработки ошибки получается можно удалять – он вообще не работает.

итого – как при общих ошибках (не найден пост например) отдавать 404.php, а при пустой категории отдавать ошибку, которая встроена в archive.php?

способ обнуления ID?

как починить все ID? скажем получил я в процессе тестов на localhost 10 постов и страниц – но ID уже заходит за 100 и больше. есть ли возможность скинуть ID и начать все с нуля, чтобы эти 10 постов и страниц заняли ID от 1 до 10?

экспорт\импорт в xml не помог – новые записи получили ID уже от 100.
переустановка базы вордпресса не катит – слишком много настроено плагинов.

дата поста и дата модификации поста

вывожу дату и дату модификации поста

<?php the_time('d.m.Y'); ?>, обновлено: <?php the_modified_time('d.m.Y'); ?>

однако есть одна проблемка, если пост не обновлялся, то он выдает что-то типа:

17.06.2008, обновлено: 17.06.2008

каким образом не выводить дату обновления, если она совпадает с датой создания поста? пробовал сравнивать даты – получилась ерунда. поих знаний php недостаточно, codex не помог.

Subscribe To Comments

можно ли как-нибудь вычислить есть у зашедшего на блог юзера подписка на блоге и если есть, то вывести ссылку на управление подписками?

Подписка на комментарии

кроме Subscribe To Comments больше нет плагинов подписки на комментарии? смотрел на wordpress.org, ничего не нашел. неужели только один существует?

Подскажите красиво оформленные комментарии

как выглядит тема легко посмотреть на любом сайте с темами. а вот чтобы увидеть, как выглядят и как оформлены комментарии в этой теме необходимо открывать тему и лезть в комментарии. если на сайте вообще предусмотрена возможность предпросмотра темы. не подскажите тему, в которой красиво оформлены комментарии – желательно с использованием аватаров (граватаров)?

количество постов в рубрике

как сделать? не, не подумайте, что я дурак и поиском не воспользовался. вот такой вывод использую:

<?php wp_list_categories('orderby=order&title_li=&hide_empty=0&show_count=1'); ?>

все бы хорошо, но вывод числа постов перескакивает на новую строку, соответственно вся навигационная панель рушится.
даже понял, что проблема с css темы – там блочный вывод ссылок на категории, то есть примерно:

#l_sidebar ul li ul li a, #l_sidebar ul li ul li a:visited {
    display: block;
    padding: 5px 1px;
    margin: 0px;
    text-decoration: none;
}

замена block на inline напрочь рушит навигацию, но зато количество постов пишется в одной строке с ссылкой на категорию.
вопрос – как сделать вывод числа постов в рубрике? причем не просто как текст рядом с ссылкой на категорию, а добавить эти цифры к ссылке.

ну то есть вместо
<a href="ссылка на категорию">Категория</a> (число постов в категории)
получить
<a href="ссылка на категорию">Категория (число постов в категории)</a>

я слишком много хочу?

падежи комментариев и WP 2.5

я насчет "2 комментария", "6 комментариев" и тд
метод на http://forum.maxsite.org/viewtopic.php?id=3439 не работает,
пользуюсь методом http://forum.maxsite.org/viewtopic.php?id=2387, то есть прописываю функцию в functions.php темы, все работает, однако есть один неприятный момент – он в админке неправильно работает, там где в управлении я вижу вместо правильного количества комментариев что-то типа

"135 комментариев "
"134 комментария"
и тд

то есть не правильное число комментариев, а номер (ID) поста. ну и плюс еще теряются эффекты самого WP – стиль оформления исчезает, нет всплывающей подсказки об ожидающих одобрения комментария и тд.
как это исправить?

Anonymous
Отправить
Ответ на: