Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Wordpress How To
цитата
21/05/11 в 07:58
 photomuza
Yacc: Подскажи что вписать в скобки (думаю в этом дело) is_home() в коде Код:
<?php if(is_home()){include 'нужная мне вставка';}?>
или какую конструкцию использовать, чтобы вставка только на одной главной вставлялась, а на стр. 1,2,3 и др. нет. is_home(1) не дает результата, is_front_page() и is_front_page(1) тоже.
цитата
21/05/11 в 13:31
 stinger
photomuza: вот вариант для показа _только_ на индексе блога:
<?php if(is_home() && !is_paged()){ ?>
твой текст
<?php } ?>
цитата
21/05/11 в 14:47
 photomuza
stinger: Спасибо, работает! smail54.gif
цитата
22/05/11 в 23:15
 Gidz
а можно ли как-то использовать данный способ Wordpress How To , но добавляя виджет не через админку, а в коде шаблона блога?
цитата
23/05/11 в 13:48
 Yacc
Можно.
цитата
23/05/11 в 14:19
 Iva Petro
Привет, если есть возможность и желание, хотел бы получить небольшую помощь. У меня есть в шаблоне новый тип данных вот код <?php
//----------------------------------------------------------------------//
// Initiate the plugin to add custom post type of "places" and "events"
//----------------------------------------------------------------------//
add_action("init", "custom_posttype_menu_wp_admin1");
function custom_posttype_menu_wp_admin1()
{
//===============Custom SECTION START================
register_post_type(   'videos',
            array(   'label'          => __('Videos'),
                  'labels'          => array(   'name'                => __('Video'),
                                          'singular_name'       => __('Video'),
                                          'add_new'             => __('Add Video'),
                                          'add_new_item'          => __('Add New Video'),
                                          'edit'                => __('Edit'),
                                          'edit_item'          => __('Edit Video'),
                                          'new_item'             => __('New Video'),
                                          'view_item'            => __('View Video'),
                                          'search_items'          => __('Search Videos'),
                                          'not_found'          => __('No Videos found'),
                                          'not_found_in_trash'    => __('No Videos found in trash')   ),
                  'public'          => true,
                  'can_export'      => true,
                  'show_ui'          => true, // UI in admin panel
                  '_builtin'          => false, // It's a custom post type, not built in
                  '_edit_link'       => 'post.php?post=%d',
                  'capability_type'    => 'post',
                  'menu_icon'       => get_bloginfo('template_url').'/images/favicon.ico',
                  'hierarchical'       => false,
                  'rewrite'          => array("slug" => "videos"), // Permalinks
                  'query_var'       => "videos", // This goes to the WP_Query schema
                  'supports'          => array(   'title',
                                          'author',
                                          'excerpt',
                                          'thumbnail',
                                          'comments',
                                          'editor',
                                          'trackbacks',
                                          'custom-fields',
                                          'revisions') ,
                  'show_in_nav_menus'   => true ,
                  'taxonomies'      => array('videoscategory','videostags')
               )
            );

// Register custom taxonomy
register_taxonomy(   "videoscategory",
            array(   "videos"   ),
            array (   "hierarchical"       => true,
                  "label"          => "Category",
                  'labels'          => array(   'name'             => __('Category'),
                                          'singular_name'    => __('Category'),
                                          'search_items'       => __('Search Category'),
                                          'popular_items'    => __('Popular Category'),
                                          'all_items'       => __('All Category'),
                                          'parent_item'       => __('Parent Category'),
                                          'parent_item_colon' => __('Parent Category:'),
                                          'edit_item'       => __('Edit Category'),
                                          'update_item'      => __('Update Category'),
                                          'add_new_item'       => __('Add New Category'),
                                          'new_item_name'    => __('New Make Category')   ),
                  'public'          => true,
                  'show_ui'          => true,
                  "rewrite"          => true   )
            );
register_taxonomy(   "videostags",
            array(   "videos"   ),
            array(   "hierarchical"       => false,
                  "label"          => "Tags",
                  'labels'          => array(   'name'             => __('Tags'),
                                          'singular_name'    => __('Tags'),
                                          'search_items'       => __('Video Tags'),
                                          'popular_items'    => __('Popular Video Tags'),
                                          'all_items'       => __('All Video Tags'),
                                          'parent_item'       => __('Parent Video Tags'),
                                          'parent_item_colon' => __('Parent Video Tags:'),
                                          'edit_item'       => __('Edit Video Tags'),
                                          'update_item'      => __('Update Video Tags'),
                                          'add_new_item'       => __('Add New Video Tags'),
                                          'new_item_name'    => __('New Video Tags Name')   ), 
                  'public'          => true,
                  'show_ui'          => true,
                  "rewrite"          => true   )
            );
}
//===============Custom SECTION END================

/////The filter code to get the custom post type in the RSS feed
function myfeed_request($qv) {
   if (isset($qv['feed']))
      $qv['post_type'] = get_post_types();
   return $qv;
}
add_filter('request', 'myfeed_request');

?> хочу настроить постинг туда, через xml rpc, но ни как не могу найти примерчик, как это реализовать, нашел только как постить в виде страницы, а мне неадо посты. Значит так. Как я понял надо добавить метод, но в xmlrpc.php не вариант, сделаем новый файлик, чтоб потом при апдейтах не патчить xmlrpc.php но сам метод я не знаю как правильно написать. А для постинга я использую библиотеку IXR_Library.php вот примерно, то что мне надо, но это видимо не совсем то.     <?php
    define('XMLRPC_REQUEST', true);
     
    /** Include the bootstrap for setting up WordPress environment */
    require_once('wp-load.php');
     
    require_once(ABSPATH . 'wp-admin/includes/admin.php');
    require_once(ABSPATH . WPINC . '/class-IXR.php');
     
    class XMLRPCServerExtended extends IXR_Server {
     
        public function XMLRPCServerExtended() {
            $this->IXR_Server(array(
                'wp_extended.create_product' => 'this:create_product',
            ));
        }
     
        /**
         * Создание страницы типа 'Product'.
         *
         * @param array $args массив с данными
         * $args[0] – имя пользователя
         * $args[1] – пароль
         * $args[2] – массив с данными для создания поста
         * (перечень полей здесь – http://codex.wordpress.org/Function_Reference/wp_insert_post)
         * @return – сообщение о результате создания страницы
         */
       
        public function create_product($args) {
            $username = $args[0];
            $userpass = $args[1];
            $post_data = $args[2];
            //проверяем логин/пароль
            if ( $this->login_pass_ok( $username, $userpass ) ) {
                //получаем id пользователя
                $user_data = get_userdatabylogin( $username );
                $post_data['post_type'] = 'example_product';
                $post_data['post_author'] = $user_data->ID;
                $post_data['ping_status'] = get_option( 'default_ping_status' );
                //Добавляем пост
                if ( 0 !== ( $post_id = wp_insert_post( $post_data ) ) ) {
                    return 'Created post '.$post_id;
                }
                return 'Post add error';
            }
        }
       
        /**
         * Check user's credentials.
         *
         * @since 1.5.0
         *
         * @param string $user_login User's username.
         * @param string $user_pass User's password.
         * @return bool Whether authentication passed.
         * @deprecated use wp_xmlrpc_server::login
         * @see wp_xmlrpc_server::login
         */
        function login_pass_ok($user_login, $user_pass) {
            if ( !get_option( 'enable_xmlrpc' ) ) {
                $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
                return false;
            }
     
            if (!user_pass_ok($user_login, $user_pass)) {
                $this->error = new IXR_Error(403, __('Bad login/pass combination.'));
                return false;
            }
            return true;
        }
     
    }
     
    $server = new XMLRPCServerExtended();

цитата
23/05/11 в 15:06
 Sergeyka
Бро, подскажи как удалить массу спам коментов апрувленных и не апрувленных не юзая пхпмуадмин и базу?
есть запросы которые это позволят сделать?
цитата
23/05/11 в 15:46
 harvester
1. Как сделать, чтобы при вставке тэга <!--more--> изменить надпись "Прочитать остальную часть записи »" на какую-либо другую.
2. У меня русскоязычный сайт, как лучше делать ссылки категорий? Транслитом или на русском?

P.S. И почему модераторы до сих пор не прикрепят тему???
цитата
23/05/11 в 16:48
 Lenskiy
andrew_newman: Попробуй забить в гугл такой запрос <!--more--> изменить надпись, авось чего найдет? icon_cool.gif
Что значит транслитом? Если русский сайт, пишем по-русски. Без всяких заграничных слов и выражений (потому что кто выражения знает, по русским сайтам не ходит).
цитата
23/05/11 в 18:15
 photomuza
Зачем Гугль icon_smile.gif andrew_newman: Если блог инглиш, ищешь в файлах темы <?php the_content('Read more &raquo;'); ?> и меняешь в Блокноте.

Если русский, то если правильно помню (давно делал), то задаешь поиск "Прочитать остальную часть записи" в папке wp-content/languages и правишь там, т.к. языковые варианты оттуда тянутся. Чтоб не вышли кракозябы из русских буков, надо править уже не в Блокноте, а в чем-то другом, например в Notepade, предварительно установив кодировку UTF-8 (без BOM).
цитата
24/05/11 в 10:07
 Gidz
Recent posts в категориях, хотелось бы в сайдбаре выводить последние посты той категории, в какой я на данный момент нахожусь, возможно ли такое сделать?
цитата
24/05/11 в 10:27
 arch enemy
как сделать (какой плагин), чтобы избранные посты показывались вверху страницы так же как здесь:
http://www.benvesco.com/blog/

нашел в коде feature_carousel.js, оно?
цитата
24/05/11 в 10:50
 Yacc
Iva Petro:
Решение этой задачи выходит далеко за рамки этого топика. icon_smile.gif
Да и времени сейчас совсем нет.

Sergeyka:
Есть конечно, но ты уточни как спам от не спама отделить. Или ты имеешь ввиду комменты помеченные как спам? Тогда так

<?php
$wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'");
?>

Или ты хочешь все комменты удалить? Тогда так

<?php
$wpdb->query("DELETE FROM $wpdb->comments");
?>

Вставляй например в footer.php и зайди на блог. Не забудь потом удалить этот код из футера.

Вообще это всё из адмнки можно сделать. icon_smile.gif

andrew_newman:
1. Например так

<!--more But wait, there's more! -->

Остальные возможности по ссылке
http://codex.wordpress.org/Customizing_the_Read_More

2. Крайне не рекомендую делать ссылки на русском. Транслитом или переводить на английский - дело хозяйское.

Gidz:
Да, возможно. Вставляй в конец functions.php своей темы

add_action( 'widgets_init', create_function( '', 'return register_widget( "WP_Widget_Latest_Posts" );' ) );
class WP_Widget_Latest_Posts extends WP_Widget {

   function WP_Widget_Latest_Posts() {
      $widget_ops = array('classname' => 'widget_latest_entries', 'description' => __( "The latest posts on your site") );
      $this->WP_Widget('latest-posts', __('Latest Posts'), $widget_ops);
      $this->alt_option_name = 'widget_latest_entries';

      add_action( 'save_post', array(&$this, 'flush_widget_cache') );
      add_action( 'deleted_post', array(&$this, 'flush_widget_cache') );
      add_action( 'switch_theme', array(&$this, 'flush_widget_cache') );
   }

   function widget($args, $instance) {
      $cache = wp_cache_get('widget_latest_posts', 'widget');

      if ( !is_array($cache) )
         $cache = array();

      if ( isset($cache[$args['widget_id']]) ) {
         echo $cache[$args['widget_id']];
         return;
      }

      ob_start();
      extract($args);

      $title = apply_filters('widget_title', empty($instance['title']) ? __('Latest Posts') : $instance['title'], $instance, $this->id_base);
      if ( ! $number = absint( $instance['number'] ) )
         $number = 10;

      $a = array( 'posts_per_page' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'ignore_sticky_posts' => true );
      if( is_category() ) {
         $a['cat'] = get_cat_ID( single_cat_title( '', false ) );
      }
      $r = new WP_Query( $a );

      
      if ($r->have_posts()) :
?>
      <?php echo $before_widget; ?>
      <?php if ( $title ) echo $before_title . $title . $after_title; ?>
      <ul>
      <?php  while ($r->have_posts()) : $r->the_post(); ?>
      <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a></li>
      <?php endwhile; ?>
      </ul>
      <?php echo $after_widget; ?>
<?php
      // Reset the global $the_post as this query will have stomped on it
      wp_reset_postdata();

      endif;

      $cache[$args['widget_id']] = ob_get_flush();
      wp_cache_set('widget_latest_posts', $cache, 'widget');
   }

   function update( $new_instance, $old_instance ) {
      $instance = $old_instance;
      $instance['title'] = strip_tags($new_instance['title']);
      $instance['number'] = (int) $new_instance['number'];
      $this->flush_widget_cache();

      $alloptions = wp_cache_get( 'alloptions', 'options' );
      if ( isset($alloptions['widget_latest_entries']) )
         delete_option('widget_latest_entries');

      return $instance;
   }

   function flush_widget_cache() {
      wp_cache_delete('widget_latest_posts', 'widget');
   }

   function form( $instance ) {
      $title = isset($instance['title']) ? esc_attr($instance['title']) : '';
      $number = isset($instance['number']) ? absint($instance['number']) : 5;
?>
      <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
      <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>

      <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to show:'); ?></label>
      <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
<?php
   }
}

Собственно это переименованный в Latest Posts дефолтный виджет Recent Posts (wp-includes/default-widgets.php) с небольшими изменениями (выделено красным ).

Последний раз редактировалось: Yacc (24/05/11 в 10:56), всего редактировалось 1 раз
цитата
24/05/11 в 10:56
 Iva Petro
эх жаль icon_cry.gif а не подскажешь, как PostRatings подружить с мультисатом? на главном работает, а на сабах нет, или может есть альтернатива какая?
цитата
24/05/11 в 11:00
 Yacc
arch enemy писал:
как сделать (какой плагин), чтобы избранные посты показывались вверху страницы так же как здесь:
http://www.benvesco.com/blog/

нашел в коде feature_carousel.js, оно?


К ВП плагинов много есть, например http://speckyboy.com/2010/06/30/top-10-content-slider-plugins-for-wordpress/

Только там ведь плагин не к ВП нужен, а к jQuery - http://jquery.malsup.com/cycle/
цитата
24/05/11 в 11:02
 Yacc
Iva Petro писал:
а не подскажешь, как PostRatings подружить с мультисатом? на главном работает, а на сабах нет, или может есть альтернатива какая?

Сейчас нет времени разбираться - не обессудь. icon_smile.gif
цитата
24/05/11 в 13:32
 Sergeyka
Yacc: и че я в тебя такой влюбленный (с) icon_smile.gif smail54.gif
цитата
24/05/11 в 15:51
 Lenskiy
Sergeyka писал:
Yacc: и че я в тебя такой влюбленный (с) icon_smile.gif smail54.gif

Дак блог же по сути получается...
Yacc, колись где твой блог... icon_cool.gif
цитата
24/05/11 в 21:21
 Gidz
использую такой код в function.php, что бы выводить на главной странице анонсы с картинками
function the_excerpt2($post, $count = 30) {
    if(empty($post)) {
        the_excerpt();
        return false;
    }
    $content = trim(strip_tags($post->post_content));
    $content = explode(' ', $content);
    $content = array_slice($content, 0, $count);
    $content = implode(' ', $content);
    preg_match('/src=\"(.*)\"/Usi', $post->post_content, $img);
    if(!empty($img[1])) $img = '<img src="'.$img[1].'" />';
    else $img = '';
    echo '<p style="text-align: center;">'.$img.'</p>'.$content.' [...]';  return true;
    return true;
}
хотелось бы, что бы <img src="'.$img[1].'" /> было вида
< href=""><img src="'.$img[1].'" alt="" title="" /></a>
тоесть добавлялись ссылки и альты как в постах.
Как то можно достать и добавить эту информацию? потом еще у меня например в некоторых постах не 1 а несколько картинок, а при таком виде выводится только 1 первая картинка, пробовал менять if(!empty($img[1])) $img = '<img src="'.$img[1].'" />'; на if(!empty($img[2])) $img = '<img src="'.$img[2].'" />'; , но так ничего вообще не выводит.

И еще не совсем по wordpress, но раз уж начал, может кто подскажет, есть ли смысл использовать < href=""><img src="'.$img[1].'" alt="" title="" /></a> для СЕ, или же может будет лучше сделать некликабельную картинку с небольшим анонсом к ней на главной странице, а при переходе к посту, что бы была полноценная кликабельная пикча со всеми альтами и тайтлами и полный текст к ней?
цитата
25/05/11 в 05:43
 harvester
Yacc писал:
2. Крайне не рекомендую делать ссылки на русском. Транслитом или переводить на английский - дело хозяйское.


Ага я транслитом сразу делал. А как быть с тегами (метками) (они на русском у меня)? Можно ли их в Sitemap добавлять?

Также появились вопросы:

1. Как изменить во всех постах определенные данные, например тот же тег <!--more--> поменять на другой?
2. Как заставить WordPress вставлять картинки по нормальному. То есть Главная картинка вставляется визардом, но чтобы при нажатии на нее он переходил не на страничку описания картинки, а открывал бы в новом окне исходное полноразмерное изображение.
цитата
26/05/11 в 01:12
 Iceworld
stinger писал:
photomuza: вот вариант для показа _только_ на индексе блога:

А есть вариант в виде виджета, + еще по категориям, или виджет текста с указание категории морды или архива.
Спрашиваю по причине того что в WP MU напряжно каждый раз по фтп менять код.
цитата
28/05/11 в 09:01
 Yacc
Gidz писал:
Как то можно достать и добавить эту информацию?

Если продолжать жрать кактус, то preg_match_all вместо preg_match и выбирать не только аттрибуты src, но и alt.
Это задача для другого раздела.

Когда тебя заебёт кактус аттач картинки к посту, не надо их все в пост пихать, для этого есть shortcode [gallery].

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

Код:
<?php
function get_attached_images( $post_id, $size = 'full', $types = array( 'image/jpeg' ) ) {
   $images = array();
   foreach( get_posts( 'post_type=attachment&post_parent=' . $post_id ) as $attachment ) {
      if( in_array( $attachment->post_mime_type, $types ) ) {
         $wpsrc = wp_get_attachment_image_src( $attachment->ID, $size );
         $images[] = array(
            'title' => $attachment->post_title,
            'caption' => $attachment->post_excerpt,
            'description' => $attachment->post_content,
            'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
            'src' => $wpsrc[0],
            'width' => $wpsrc[1],
            'height' => $wpsrc[2]
         );
      }
   }
   return $images;
}
?>

и где-то в цикле...

Код:
<?php
foreach( get_attached_images( get_the_id() ) as $a ) {
   echo '<img src="' . $a['src'] . '" alt="' . $a['alt'] . '" width="' . $a['width'] . '" height="' . $a['height'] . '" />';
}
?>



andrew_newman писал:
1. Как изменить во всех постах определенные данные, например тот же тег <!--more--> поменять на другой?

Например вставить в footer.php
Код:
<?php
// -1 - значит все посты. Имей ввиду. icon_smile.gif
foreach( get_posts( 'posts_per_page=-1' ) as $p ) {   
   $content = str_replace( '<!--more-->', '<!--more Something new here-->', $p->post_content );
   $wpdb->update( $wpdb->posts, array( 'post_content' => $content ), array( 'ID' => $p->ID ) );
}
?>

и обновить страницу в браузере. Не забудь потом убрать этот код из футера.

andrew_newman писал:
Как заставить WordPress вставлять картинки по нормальному.

Всё нормально он вставляет. Когда картинку вставляешь можно выбрать куда её линковать.
цитата
28/05/11 в 11:02
 WorldTraffic
Yacc: подскажи если знаешь, есть ли плагин который выводит отсчет времени до публикации нового поста?
так что бы время бралось автоматом и созданного поста который в ожидании

поиском нашел
Live Countdown Timer,Countdown Timer но тут надо самому врея прописывать, что не совсем подходит

идеальный вариант, я создал пост, автоматом создается таймер и выводится на главную страницу в формате название и час/мин/сек
цитата
28/05/11 в 15:13
 harvester
Yacс, золотой ты человек smail54.gif
цитата
29/05/11 в 15:09
 shamit
дел
Стр. « первая   <  7, 8, 9, 10, 11  >  последняя »


Эта страница в полной версии