Feed on
Posts
Comments

Category Archive for 'Разное'

Цитата:

Сообщение от thoth666

давно хочу озадачиться созданием своей ветки вордпресса, безопасной и непалимой )

я все хочу Кодекс по человечески перевести, но потом открываю его и думаю: "Ну нафига? И так ведь все ясно!"

Read Full Post »

Цитата:

Сообщение от Pingvi

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

Изучайте на здоровье - http://www.wp-watermark.com/

Read Full Post »

Сделал небольшую подборочку шорткодов (short code) для WP. Думаю, что будет полезно.

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

Итак поехали!

Отключаем автосохранение постов в админке (кого как, а меня раздражает :-))

вставляем в functions.php следующий код:

PHP код:



function disableAutoSave(){

    
wp_deregister_script('autosave');

}

add_action'wp_print_scripts''disableAutoSave' ); 




Автоматичекое вставление картинок, используя имя файла

вставляем в functions.php следующий код:

PHP код:



function image_shortcode($atts$content null) {

    
extractshortcode_atts( array(

    
'name' => '',

    
'align' => 'right',

    
'ext' => 'png'

    
'path' => '/wp-content/uploads/',

    
'url' => ''

    
), $atts ) );

    
$file=ABSPATH."$path$name.$ext";

    if (
file_exists($file)) {

        
$size=getimagesize($file);

        if (
$size!==false$size=$size[3];

        
$output "<img src='".get_option('siteurl')."$path$name.$ext' alt='$name' $size align='$align' class='align$align' />";

        if (
$url$output "<a href='$url' title='$name'>".$output.'</a>';

        return 
$output;

    }

    else {

        
trigger_error("'$path$name.$ext' image not found"E_USER_WARNING);

        return 
'';

    }

}

add_shortcode('image','image_shortcode'); 




Теперь мы можем использовать такой шорткод:

Код HTML:

[image name=название картинки]

Настройки:align-выравнивание, ext - расширение файлов, path - папка с картинками

Считаем количество слов в посте

вставляем в functions.php следующий код:

PHP код:



function wcount(){

    
ob_start();

    
the_content();

    
$content ob_get_clean();

    return 
sizeof(explode(" "$content));






Вызов функции
PHP код:



<?php echo wcount(); ?>


Отображаем тэги для определенной категори (если пофантазировать - очень удобная штука для навигации)
вставляем код куда нам надо:

PHP код:



<?php

    query_posts
('category_name=НАЗВАНИЕ КАТЕГОРИИ');

    if (
have_posts()) : while (have_posts()) : the_post();

        
$posttags get_the_tags();

        if (
$posttags) {

            foreach(
$posttags as $tag) {

                
$all_tags_arr[] = $tag -> name;

            }

        }

    endwhile; endif; 

    $tags_arr array_unique($all_tags_arr);

    echo 
'<pre>'.print_r($tags_arrtrue).'</pre>';

?>


Отключаем автоматическое форматирование части текста

вставляем в functions.php следующий код:

PHP код:



function my_formatter($content) {

    
$new_content '';

    
$pattern_full '{(\[raw\].*?\[/raw\])}is';

    
$pattern_contents '{\[raw\](.*?)\[/raw\]}is';

    
$pieces preg_split($pattern_full$content, -1PREG_SPLIT_DELIM_CAPTURE);

    foreach ($pieces as $piece) {

        if (
preg_match($pattern_contents$piece$matches)) {

            
$new_content .= $matches[1];

        } else {

            
$new_content .= wptexturize(wpautop($piece));

        }

    }

    return $new_content;

}

remove_filter('the_content''wpautop');

remove_filter('the_content''wptexturize');

add_filter('the_content''my_formatter'99); 




Теперь такой текст

Код HTML:

[raw]Unformatted code[/raw]

не будет автоматически форматироваться

Отображаем категории в две калонки

вставляем код куда нам надо:

PHP код:



<?php

$cats 
explode("<br />",wp_list_categories('title_li=&echo=0&depth=1&style=none'));

$cat_n count($cats) - 1;

for (
$i=0;$i<$cat_n;$i++):

if (
$i<$cat_n/2):

$cat_left $cat_left.'<li>'.$cats[$i].'</li>';

elseif (
$i>=$cat_n/2):

$cat_right $cat_right.'<li>'.$cats[$i].'</li>';

endif;

endfor;

?>

<ul class="left">

<?php echo $cat_left;?>

</ul>

<ul class="right">

<?php echo $cat_right;?>

</ul>


Часть текста, которая видна только зарегистрированным пользователям

вставляем в functions.php следующий код:

PHP код:



add_shortcode'member''member_check_shortcode' );

function member_check_shortcode$atts$content null ) {

     if ( 
is_user_logged_in() && !is_null$content ) && !is_feed() )

        return 
$content;

    return 
'';






Теперь такой текст (урл, картинка и т.д) увидят только зарегистрированные пользователи

Код HTML:

[member]
Какойто текст бла-бла
[/member]

Отображаем посты между определенными датами

вставляем код перед началом цикла:

PHP код:



<?php

  
function filter_where($where '') {

        
$where .= " AND post_date >= '2009-05-01' AND post_date <= '2009-05-15'";

    return 
$where;

  }

add_filter('posts_where''filter_where');

query_posts($query_string);

?>


Даты меняем по необходимости

Отображаем количество фалловеров у записи (Twitter)

вставляем в functions.php следующий код:

PHP код:



<?php

function tweets($url){

  
$content file_get_contents("http://api.tweetmeme.com/url_info?url=".$url);

  
$x = new SimpleXmlElement($content);

  
$tweets $x->story->url_count;

  echo 
"Tweets: ".$tweets;

}



Для вызова функции используется

PHP код:



<?php tweets($post->permalink); ?>


Вставляется в single.php

Отображаем количество зарегистрированных пользователей

вставляем код куда нам надо:

PHP код:



$users $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");

echo 
$users." registered users."




Отображаем пост в три колонки

Вставляется в single.php:

PHP код:



<?php

$page_columns 
explode("[--column--]"$post->post_content);

print 
$page_columns[0];

print 
'<div class="column first">';

print 
$page_columns[1];

print 
'</div>';

print
'<div class="column second">';

print 
$page_columns[2];

print 
'</div>';

print 
'<div class="column third">';

print 
$page_columns[3];

print 
'</div>';

?>


При этом пост должен быть оформлен так:

Код HTML:

идет какой-то текст.....
[--column--]
Текст для первой колонки
[--column--]
Текст для второй колонки
[--column--]
Текст для третьей колонки

Не забудте придать этому вид с помощью CSS

Получаем последние комментарии без плагина

Вставляем код куда надо:

PHP код:



<?php

  
global $wpdb;

  
$sql "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";

  $comments $wpdb->get_results($sql);

  
$output $pre_HTML;

  
$output .= "\n<ul>";

  foreach (
$comments as $comment) {

    
$output .= "\n<li>".strip_tags($comment->comment_author) .":" "<a href=\"" get_permalink($comment->ID)."#comment-" $comment->comment_ID "\" title=\"on ".$comment->post_title "\">" strip_tags($comment->com_excerpt)."</a></li>";

  }

  
$output .= "\n</ul>";

  
$output .= $post_HTML;

  echo 
$output;

?>


Число комментариев настраивается, по умолчанию 10

Не показываем картинки из поста, когда он на главной странице

вставляем в functions.php следующий код:

PHP код:



add_filter('the_content','wpi_image_content_filter',11);

function wpi_image_content_filter($content){

    if (is_home() || is_front_page()){

      
$content preg_replace("/<img[^>]+\>/i"""$content);

    }

    return $content;






Показываем похожие записи без плагина

вставляем в functions.php следующий код:

PHP код:



function related_posts_shortcode$atts ) {

    
extract(shortcode_atts(array(

        
'limit' => '5',

    ), 
$atts));

    global $wpdb$post$table_prefix;

    if ($post->ID) {

        
$retval '<ul>';

         
// Get tags

        
$tags wp_get_post_tags($post->ID);

        
$tagsarray = array();

        foreach (
$tags as $tag) {

            
$tagsarray[] = $tag->term_id;

        }

        
$tagslist implode(','$tagsarray);

        // Do the query

        
$q "SELECT p.*, count(tr.object_id) as count

            FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id  = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID

                AND p.post_status = 'publish'

                AND p.post_date_gmt < NOW()

             GROUP BY tr.object_id

            ORDER BY count DESC, p.post_date_gmt DESC

            LIMIT $limit;"
;

        $related $wpdb->get_results($q);

         if ( 
$related ) {

            foreach(
$related as $r) {

                
$retval .= '

    <li><a title="'
.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>

'
;

            }

        } else {

            
$retval .= '

    <li>No related posts found</li>

'
;

        }

        
$retval .= '</ul>

'
;

        return 
$retval;

    }

    return;

}

add_shortcode('related_posts''related_posts_shortcode'); 




Фунция вызывается так:

Код HTML:

[related_posts]

Показываем количество результатов найденных в поиске

в файле search.php ищем:

Код HTML:

<h2 class="pagetitle">Search Results</h2>

Заменяем на:

PHP код:



<h2 class="pagetitle">Search Results for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key wp_specialchars($s1); $count $allsearch->post_count_e(''); _e('<span class="search-terms">'); echo $key_e('</span>'); _e(' — '); echo $count ' '_e('articles'); wp_reset_query(); ?></h2>


Убираем напоминание об обновлении

вставляем в functions.php следующий код:

PHP код:



if ( !current_user_can'edit_users' ) ) {

  
add_action'init'create_function'$a'"remove_action( 'init', 'wp_version_check' );" ), );

  
add_filter'pre_option_update_core'create_function'$a'"return null;" ) );






Показываем запланированные посты

Вставляем куда надо:

PHP код:



<div>

    <div><p>Скоро читайте</p></div>

    <?php query_posts('showposts=10&post_status=future'); ?>

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <div >

            <p class><b><?php the_title(); ?></b><?php edit_post_link('e',' (',')'); ?><br />

            <span class="datetime"><?php the_time('j. F Y'); ?></span></p>

        </div>

    <?php endwhile; else: ?><?php endif; ?>

</div>


Показываем посты рандомом

На заметку: кто не понимает как работает цикл (loop) будте осторожны

в index.php перед началом цикла вставляем:

PHP код:



query_posts('orderby=rand'); 




Запретить к индексации определенную категорию

в header.php вставляем между тэгами <head></head>

PHP код:



<?php if ( is_category('8') || in_category('8') ) {

    echo 
'<meta name="robots" content="noindex">';

}



8 - id категории

если надо запретить определенный пост, то:

PHP код:



<?php if ($post->ID == 17) {

    echo 
'<meta name="robots" content="noindex">';

}



17 - id поста

Показываем рандомный пост в сайдбаре

вставляем там где надо:

PHP код:



query_posts(array('orderby' => 'rand''showposts' => 1));

if (
have_posts()) :

     while (
have_posts()) : the_post();

         
the_title();

         
the_excerpt();

     endwhile;

endif; 




Показываем самый комментируемый пост за определенное время

вставляем там где надо:

PHP код:



<h2>Самая обсуждаемая новость</h2>

<ul>

<?php

$result 
$wpdb->get_results("SELECT comment_count,ID,post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '2008-01-01' AND '2008-12-31' ORDER BY comment_count DESC LIMIT 0 , 10");

foreach ($result as $topten) {

    
$postid $topten->ID;

    
$title $topten->post_title;

    
$commentcount $topten->comment_count;

    if (
$commentcount != 0) {

    
?>

         <li><a href="<?php echo get_permalink($postid); ?>"><?php echo $title ?></a></li>

    <?php }

}

?>

</ul>

Даты настраиваются

Подсвечиваем текущую категорию

в CSS добавляем:

Код HTML:

#nav .current-cat{
    background:#999;
    color:#222;
    text-decoration:underline;
}

Авторы шортокодов: WP recipes, Blog Oh Blog, Kyle Eslick, Avice De’vereux, Blue Anvil, ProBlogDesign, WordPress Codex, Joost de Valk
Подборку сделал (и местами перевел) LSN

ЗЫ: виджеты - зло!

Read Full Post »

Вопрос для понимания структуры сайта. Я новичок =) Помогите =). Пытаюсь разобраться с Уровнем Вложенности.
Допустим, если делать вот такую структуру меню:
Главная страница (УВ1)
Телевизор
Двд-плеер
Музыкальный центр

Всего 10 пунктов
Вторая страница (УВ2)
Телевизор
ЭЛТ
Транзисторы
Резисторы
Компоненты

Всего 10 пунктов
Третья страница (УВ3)
ЭЛТ – это электронно-лучевая трубка, бла бла бла
(описание каждого элемента на отдельной страничке)

Волнует вопрос, сколько оптимально вешать внутренних ссылок в меню на страницах, чтобы яндекс не забанил. Речь идет именно о внутренних ссылках на сайт. По этой структуре у нас получается:
1 главная страница - 10 ссылок
10 вторых страниц - 10 ссылок
100 третьих страниц – ссылок нет.
Если на главной странице будет 10 ссылок, то вроде нормально, а вот если на второй странице повесить не 10, а допустим 25, или даже 40 ссылок на страницы УВ3

Read Full Post »

Как хоститься дома?

Цитата:

Сообщение от Йода

Точно также как и с одним. Абсолютно ничем не отличается.
Второй айпи- это придумка прошлого века на предмет повышения стабильности работы. Это не техническое требование. Это рекомендация.
В чем вопрос то?

Панель управления доменом требует 2 IP разных подсетей. С одним не принимает.

Read Full Post »