Dagon sitemap generator и проблемы с ЧПУ

Июл 12

Есть у dagon sitemap generator один такой маленький баг – он при включенных ЧПУ не всегда правильно определяет номер страницы, выводит всегда только первую страницу.  Почему так происходит, я точно не определил, функция get_query_var видимо некорректно срабатывает.

Вылечить можно, добавив несколько строчек в файл плуга sitemap-generator.php

После строк

	$current_page = 1;
	if (get_query_var("pg")) {
		$current_page = get_query_var("pg");
	}

Добавляем:

	$url = $_SERVER['REQUEST_URI'];
        preg_match("([0-9]+)", $url, $out);
        if(($out[0] != $current_page) AND ($out[0] > 1)){ $current_page = $out[0]; }

Это примерно 1074 строка.

Вкратце, что делает код. Он проверяет номер страницы, который определяет сам плагин, с номером страницы в урле. Если они не совпадают, то берет номер страницы из урла. Проверялось на чпу вида /sitemap/4

UPD. Подправил немного, чтобы для нулевой страницы не переопределял номер.

Постинг изображений в wordpress через XML-RPC

Май 13

небольшой код

 

$username = "username";
    $password = "password";
    $rpcurl = "http://myblog.com/xmlrpc.php";

    $image = fopen("file.jpg","r");
    $file = fread($image,filesize("file.jpg"));
    fclose($image);
    $filetype = "image/jpeg";
    $filename = "testimage.jpg";

$result = wpUploadFileXMLRPC($blogid,$rpcurl,$username,$password,$filename, $filetype, $file);
echo(print_r($result));

function wpUploadFileXMLRPC($blogid,$rpcurl,$username,$password,$filename, $filetype, $file){

    $params = array('',$username,$password,array('name'=>$filename, 'type'=>$filetype,'bits'=>$file,'overwrite'=>true));
    $request = xmlrpc_encode_request('wp.uploadFile',$params);
    $result = makeCall($request,$rpcurl);

    return($result);
}

Отобразить общее количество комментариев на блоге

Апр 21

<?php
global $wpdb;
$where = 'WHERE comment_approved = 1';
$comment_counts = (array) $wpdb->get_results("
 SELECT  COUNT( * ) AS total
 FROM {$wpdb->comments}
 {$where}
 ", object);

echo $comment_counts[0]->total;
?>

Как убрать category из урла в wordpress

Мар 31

Можно колдовать с category base в настройках, но я нашел в интернетах более простой способ, добавив в functions.php пару строк

function seocategorydel($catlink1) {
 $catlink1 = str_replace('/category', '', $catlink1);
 return $catlink1;
}
add_filter('category_link', 'seocategorydel', 1, 1);

Навигация по категории.

Мар 15

В вордпрессе есть встроенная навигация по страницам prev_link next_link, но она ищет вообще по всем страницам. Мне тут понадобилось сделать такую же, только в пределах одной категории.

<ul>
 <?php
 $category = get_the_category();
 $catID = $category[0]->term_id;
 $myposts = get_posts('numberposts=2&offset=2&category=$catID');
 $t = 0;
 foreach($myposts as $post) :
 setup_postdata($post);
 if($t == 0){$class = "first";}
 if($t == 1){$class = "last";}
 $t++;
 ?>
 <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endforeach; ?>
 </ul>

Чем еще полезен пример – позволяет вытащить инфу с массива категории. Я его постоянно ищу.
Вторая строка дает массив $category[0], в котором есть след вещи:

[term_id]
[name]
[slug]
[term_group]
[term_taxonomy_id]
[taxonomy]
[description]
[parent]
[count]
[object_id]
[cat_ID]
[category_count]
[category_description]
[cat_name]
[category_nicename]
[category_parent]

Т.е. можно вытащить отдельно имя категории – $category[0]->name;

P.S. Надо быть проще..

<ul>
<?php
$prevPost = get_previous_post();
?>
<li><a href="<?php echo get_permalink($prevPost->ID);?>"><?php echo $prevPost->post_title;?></a></li>
<?php
$prevPost = get_next_post();
?>
<li><a href="<?php echo get_permalink($prevPost->ID);?>"><?php echo $prevPost->post_title;?></a></li>
</ul>

Добавить postmeta через xml rpc

Фев 15

Или рожденные в муках познания.  XML-RPC как-то не очень дружит с документацией, никаких особо внятных вещей по поводу формата postmeta я так и не нашел.  И если как ставить какой-нибудь excerpt еще можно догадаться:

$content_struct['mt_excerpt'] = "string";

то вот до выставления даты можно долго доходить:

$date = gmdate("Ymd\TH:i:s",strtotime("+".rand(0,20)." day +
".rand(0,20)." hour +".rand(0,60)." minute"));
$content_struct['dateCreated'] = new IXR_Date($date);

В примере дата на 20 дней вперед-назад разносится.

Custom fields выставляются так:

$custom_fields = array(
     array(
                'key'  => 'price',
		'value'	 => 'val1'
	),
);
$content_struct['custom_fields']= $custom_fields;

XML RPC и mod_security

Янв 18

На некоторых хостингах, на свебе например, не дает постить в вп через xml-rpc.
В .htaccess

<Files xmlrpc.php>
SecFilterInheritance Off
</Files>

Еще один вариант robots.txt для wordpress

Дек 14

Нашел на одном из блогов такой вариант записи robots.txt

User-agent: *
 	Allow: /

Disallow: /wp-content/
 	Disallow: /trackback/
 	Disallow: /wp-admin/
 	Disallow: /archives/
 	Disallow: /*?
 	Disallow: /*.js$
 	Disallow: /*.inc$
 	Disallow: /*.css$
 	Disallow: */trackback/
 	Disallow: /c/
 	Disallow: /author/
 	Disallow: /tag/

User-agent: Mediapartners-Google
 	Allow: /

User-agent: Adsbot-Google
 	Allow: /

User-agent: Googlebot-Image
 	Allow: /

User-agent: Googlebot-Mobile
 	Allow: /

#User-agent: ia_archiver-web.archive.org
 	#Disallow: /

Sitemap: http://wpswitch.com/robots.txt

Сразу видно, что расчитано на чпу вида %category%.
Еще интересен вариант с отсечением js, inc и css. Хотя вроде цсс итак не индексируется.

Полезные регулярки.

Сен 25

Несколько полезных примеров регулярок, которые можно скопипастить по мере нужды. Также небольшая памятка по составлению и функциям.

Примеры шаблонов

Выражение Совпадает
foo Слово foo
^foo Начинается с foo
foo$ Кончается с foo
^foo$ Точное совпадение с foo
[abc] a, b или c
[a-z] Любая строчная буква
[^A-Z] Любой  символ не в верхнем регистре
(gif|jpg) Совпадает либо gif либо jpeg
[a-z]+ Одна  или более строчных букв
[0-9.-] Любое число, точка или минус
^[a-zA-Z0-9_]{1,}$ Любое слово, в котором как минимум одна буква, число или _
([wx])([yz]) wy, wz или xy, xz
[^A-Za-z0-9] Любой символ (не буква и не цифра)
([A-Z]{3}|[0-9]{4}) Совпадает три буквы или четыре цифры

read all »

Карта сайта – какая у вас?

Сен 23

Карты сайта обычно у всех одинаковы – это простыня со списком ссылок, которых чем больше – тем лучше. Считается, что так лучше в плане сео. И хотя для ботов уже давно делают свою карту, в xml, многие продолжают делат как раньше.Особенно часто для вп используют плагин dagon sitemap generator.

Но можно все сделать красиво. Нашел вот примерчик, как можно сделать красивую карту сайта.

slickmap-css-sitemap

Данный пример хорошо подходит для коммерческого сайта, а вот для блога переделать его проблемно. Особенно, если постов много и категорий.
Немного поколдовав, я сделал вот такую карту сайта с использованием jQuery . Под осликами наверно не будет корректно отображаться.
sitemap read all »