Сайт о WordPress: плагины, функции, хаки, статьи...
WordPress как на ладони
Ответьте на вопросы 📢
    все вопросы →
  • "читать далее" в page.php

    Здравствуйте, есть какая-то возможность заставить работать тег <!--more--> на странице page.php? Я понимаю, что это страница отдельной записи, а данный тег предназначен для главной страницы (index.php). Но у меня в page.php находится много циклов wp_query, где тоже необходимо обрезать записи. Спасибо.

    Ответить →
  • Плагин Wordpress

    Нужно создать плагин: В админке добавляет метабокс на страницу добавления\редактирования поста\страницы (в сайдбаре), в котором можно задавать: название услуги\товара, описание услуги\товара, изображение услуги\товара (используем медиаменеджер), цену услуги\товара, валюту услуги\товара
    Также плагин создает виджет, который выводит указанные данные, если они заданы для страницы, на которой он вызывается. Если данные не заданы, то просто не выводим виджет на этой странице
    Так же плагин создает шорткод который можно вставить в текст страницы и который будет выводить те же данные в виде блока. Шорткод принимает значение в виде id записи\поста. Если это значение не задано, то выводит данные той записи, из которой вызван.

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

    КОД ПЛАГИНА:

    <?php
    /*
    Plugin Name: Product_scheme
    Plugin URI: http://
    Description: Plugin realizes product scheme.
    Author: 
    Version: 1.0
    Author URI: http://
    */
    /*  Copyright 2015    (email: )
    	 This program is free software; you can redistribute it and/or modify
    	it under the terms of the GNU General Public License as published by
    	the Free Software Foundation; either version 2 of the License, or
    	(at your option) any later version.
    	 This program is distributed in the hope that it will be useful,
    	but WITHOUT ANY WARRANTY; without even the implied warranty of
    	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    	GNU General Public License for more details.
    	 You should have received a copy of the GNU General Public License
    	along with this program; if not, write to the Free Software
    	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    */
    /* Добавляем блоки в основную колонку на страницах постов и пост. страниц */
    
    function product_add_custom_box() {
    	$screens = array( 'post', 'page' );
    	foreach ( $screens as $screen )
    		add_meta_box( 'product_sectionid', 'Товары и цены', 'product_meta_box_callback', $screen );
    }
    add_action('add_meta_boxes', 'product_add_custom_box');
    
    /* HTML код блока */
    function product_meta_box_callback() 
    {
    	// Используем nonce для верификации
    	wp_nonce_field( plugin_basename(__FILE__), 'product_noncename' );
    
    	// Поля формы для введения данных
    	echo '<label for="product_new_field">' . __("Название услуги/товара", 'product_textdomain' ) . '</label> ';
    	echo '
    '; 
    	echo '<label for="product_new_field">' . __("Описание услуги/товара", 'product_textdomain' ) . '</label> ';
    	echo '
    ';
    	echo 'ИЗОБРАЖЕНИЕ 
    ';
    	echo '<label for="product_new_field">' . __("Цена услуги/товара", 'product_textdomain' ) . '</label> ';
    	echo '';
    	echo ' грн
    	               usd
    	   euro
    	      ';					
    }
    
    /* Сохраняем данные, когда пост сохраняется */
    function product_save_postdata( $post_id ) {
    	// проверяем nonce нашей страницы, потому что save_post может быть вызван с другого места.
    	if ( ! wp_verify_nonce( $_POST['product_noncename'], plugin_basename(__FILE__) ) )
    		return $post_id;
    
    	// проверяем, если это автосохранение ничего не делаем с данными нашей формы.
    	if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
    		return $post_id;
    
    	// проверяем разрешено ли пользователю указывать эти данные
    	if ( 'page' == $_POST['post_type'] && ! current_user_can( 'edit_page', $post_id ) ) {
    	return $post_id;
    	} elseif( ! current_user_can( 'edit_post', $post_id ) ) {
    		return $post_id;
    	}
    
    	// Убедимся что поле установлено.
    	if ( ! isset( $_POST['product_new_field'] ) )
    		return;
    
    	// Все ОК. Теперь, нужно найти и сохранить данные
    	// Очищаем значение поля input.
    	$my_data = sanitize_text_field( $_POST['product_new_field'] );
    
    	// Обновляем данные в базе данных.
    	update_post_meta( $post_id, '_my_meta_value_key', $my_data );
    }
    add_action( 'save_post', 'product_save_postdata' );
    
    
    require_once( plugin_dir_path( __FILE__ ) . 'p_s_widget.php' );
    

    КОД ВИДЖЕТА:

    /**
    	 * Front-end display of widget.
    	 *
    	 * @see WP_Widget::widget()
    	 *
    	 * @param array $args     Widget arguments.
    	 * @param array $instance Saved values from database.
    	 */
    	public function widget( $args, $instance ) {
    		echo $args['before_widget'];
    		if ( ! empty( $instance['title'] ) ) {
    			echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];
    		}
    		echo __( 'Название услуги/товара 
    ', 'text_domain' );
    		echo __( 'Описание услуги/товара 
    ', 'text_domain' );
    		echo __( 'Изображение услуги/товара 
    ', 'text_domain' );
    		echo __( 'Цена услуги/товара'.' валюта', 'text_domain' ); 
    		echo $args['after_widget'];
    	}
    
    	/**
    	 * Back-end widget form.
    	 *
    	 * @see WP_Widget::form()
    	 *
    	 * @param array $instance Previously saved values from database.
    	 */
    	public function form( $instance ) {
    		$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'Товары и услуги', 'text_domain' );
    		?>

    		<?php 
    	}
    
    	/**
    	 * Sanitize widget form values as they are saved.
    	 *
    	 * @see WP_Widget::update()
    	 *
    	 * @param array $new_instance Values just sent to be saved.
    	 * @param array $old_instance Previously saved values from database.
    	 *
    	 * @return array Updated safe values to be saved.
    	 */
    	public function update( $new_instance, $old_instance ) {
    		$instance = array();
    		$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
    
    		return $instance;
    	}
    
    } // class Product_Widget
    // register Product_Widget widget
    function register_Product_Widget() {
    	register_widget( 'Product_Widget' );
    }
    add_action( 'widgets_init', 'register_Product_Widget' );
    Ответить →
  • Материалы рубрики

    Здравствуйте! Как можно вывести остальные материалы рубрики на странице с материалом этой рубрики?

    Пример: Есть рубрика "Комедии" в ней материал "Зеленый Слоник", я перехожу на страницу с "Зеленым Слоником" и на ней выводится все остальные записи рубрики "Комедии".

    Разобрался вроде сам:

    <?php $mycat=get_the_category(); $mycat=$mycat[0]; ?>
    <?php $postslist = get_posts('numberposts=-1&orderby=title&order=ASC&category='.$mycat->cat_ID); ?>
    <?php foreach ($postslist as $post) : setup_postdata($post); ?>
    
    text
    
    <?php endforeach; ?>
    
    Ответить →
  • Два single.php для вывода через AJAX-запрос, и традиционным методом.

    Задача:
    Выводить пост без хидера и футера на главной странице через AJAX-запрос при помощи шорткода, и полный пост с хидером и футером в на других страницах:
    Для этого пытаюсь сделать через простой плагин переопределение сингл-темплейта:

    function my_template($single_template) {
      global $post;
      if ($post) {
    	$single_template = dirname( __FILE__ ) . '/my-template.php';
      }
      
      return $single_template;
    }
    add_filter( 'single_template', 'my_template' );

    а затем делаю проверку не является ли страница главной:

    function my_single_template($single_template) {
      if (!is_front_page())
    	return dirname( __FILE__ ) . '/my_single_template.php';
      else
    	return $single_template;
    }
    add_filter('template_include', 'my_single_template');
    

    Но! На главной странице всё равно выводится второй шаблон my_single_template.
    Вопрос. Как сделать так, чтобы на главной странице грузился первый вариант, а во всех остальных случаях второй?

    Ответить →
  • Как лучше поступить с рассылкой

    Вот допустим создал очень простой плагин, который собирает у пользователей e-mail и имя, и я этим людям хочу отослать письма, рассылку оформив допустим красиво в mailchimp, можно воспользоваться wp-mail, но он вроде бы не предназначен для рассылки 100к или больше

    Как быть передавать БД в сервис и там что-то делать, либо придумать настройки и как-то привязать к сервису, чтобы оформив письмо нажал на кнопку и все сделалось или так нельзя

    Подскажите с советами

    Спасибо

    Ответить →
  • Здравствуйте, если возможно - определить путь к загруженному файлу в functions.php

    Здравствуйте, если возможно подскажите как определить путь к загруженному файлу в functions.php

    attachment_link

     

    к файлу оригинального размера, а не превьюв

     

    Заранее благодарен

    Ответить →
  • Вывод на главной странице ссылку на подстраницу другой страницы

    Привет, Кама.

    Есть страница словаря. Все определения - это её дочерние подстраницы.

    Как на главной сделать вывод ссылки на одну из таких подстраниц типа "Знаете ли вы, что такое (ссылка-заголовок на подстраницу словаря)" ?

    Примечание: желательно при обновлении страницы менять ссылку на другую страницу рандомно или по порядку (по алфавиту, например).

    Ответить →
  • Проблема с циклом и ссылками на страницу.

    Доброе время суток.

    Попытаюсь объяснить свою проблему кратко и понятно.

    • Существует страница (Каталог) на которой выводятся 5 существующих ЗАПИСЕЙ с миниатюрой(миниатюра по сути это ссылка с которой, как предполагалось нужно перейти на определённую страницу)
    • Ещё есть 5 страниц на которые нужно переходить нажав по миниатюре записи(поста), и при клике по миниатюре определённого поста, пользователь должен перейти на определенную страницу.
    • (Пост(фасады)->Страница(фасады) )
    • (Пост(кровли)->Страница(кровли)) вот как-то так.
    • Посты выводятся в WP цикле соответственно с HTML разметкой.
    • Никак не могу понять что нужно вставить в <a href="???">
    • Как этой ссылке дать знать куда надо идти.
    • Помогите люди добрые.. Я чайник в программировании и в WORDPRESS естественно. Бошка лопается уже второй день..  Спасибо вам заранее...
    Ответить →
Вопросы в комментариях 📢
  • Виктор: Привет Кама. Как удалить все...

    Привет Кама.
    Как удалить все произвольные поля с пустым значением?

    Так получится?

    DELETE *
    FROM wp_postmeta pm
    LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
    WHERE wp.ID IS NULL

    Ответить →
  • Владислав: Здравствуйте, как подключить...

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

    Ответить →
  • Стас: добрый день у меня WP + Woo. ...

    добрый день у меня WP + Woo.

    На странице Настройки постоянных ссылок в разделе База постоянных ссылок на товар я организовал крутейшие Человекомчитаемые-SEO-URL следующим образом:
    Произвольная база: "/купить"
    И получил по всему сайту вот такую кашу:
    http://site.ru/купить/%d0%ba%d0%be%d0%bc%d0%bf%d0%bb%d0%b5%d0%ba%d1%82.
    И все шло очень даже прекрасно.
    Но однажды я понял, что мне нужна каша вот такая:
    http://site.ru/%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C/%d0%ba%d0%be%d0%bc%d0%bf%d0%bb%d0%b5%d0%ba%d1%82.

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

    прошу умных мыслей на сей счет и, если это коммерческий вопрос, готов заплатить.

    Ответить →
  • Алексей: Здраствуйте, если блог новый и на...

    Здраствуйте, если блог новый и на нем нет статей нужно этот год RewriteRule ^(.*?/)category/(.+)$ $1$2 [R=301,L] в .htaccess добавлять или не надо?

    Ответить →
  • KPC: В IE не отображается

    В IE не отображается

    Ответить →
  • Alexander: Как тогда сделать не к строке, а...

    Как тогда сделать не к строке, а ко значению из 'views'?

    $wpdb->update($wpdb->prefix."views_count",
    	            array( 'views' => 'views'+1),  
    	            array( 'post_id' => $id ),  
    	            array( '%d' ),  
    	            array( '%d' )
    Ответить →
  • campusboy: Посмотрите wp_insert_term, там...

    Посмотрите wp_insert_term, там перечислены хуки

    Ответить →
  • YARA: +1, как поправить..?

    +1, как поправить..?

    Ответить →
  • Николай: Подскажите как добиться вывода...

    Подскажите как добиться вывода результатов поиска только по определенной категории? Хочу результаты поиска разбить по категориям.
    Вот пример, который почему то не работает:

    $s = get_search_query();    //записываем поисковую фразу в $s
    $args = array(                   // записываем в массив данные для сортировки
    's' => $s,                      //наша поисковая фраза
    'cat' => '8'                   //поиск только по категории с ID = 8
    );
    query_posts($args);            // применяем наши условия сортировки поиска
    if ( have_posts() ) : while ( have_posts() ) : the_post(); //дальше пошел LOOP вывода товаров, которые нам нужны...

    Но вот результатов поиска нету... уже что угодно пробовал, но query_posts не работает *dash*
    Вставлял query_posts('cat=8'); в дефолтную тему перед лупом и ничего... Либо лыжи не едут, либо я дебил.

    Ответить →

jQuery Datepicker: выбор даты для поля input в WordPress

Подключить скрипт для быстрой установки даты в поле <input> не сложно и JS скриптов для этого в сети хватает. А в этой статье я выложу готовый код для WordPress. Задача такая: у нас есть input ...

CSS селекторы

Что такое CSS селекторы? Статья коротко объясняет о главном принципе CSS - каскадности и содержит описание более чем 30 селекторов для выбора html элементов.

3 способа создать шаблон страницы

В этой статье я расскажу о способах создания шаблонов для постоянных страниц WordPress. Каждый способ несет в себе свои плюсы и минусы. Но прежде чем начать, коротко о том, что такое страницы и чем ...

Taxonomy Metadata: метаданные для таксономий

В Wordpress для таксономий не предусмотрены метаданные. Плагин из этой статьи может все исправить... Таксономии - это рубрики, метки и другие произвольные коллекторы записей, которые удобно ...

Джино.Спектр - облачный-хостинг для WordPress

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

WP_Query и WordPress 4.0: исправления в параметре orderby

В WordPress 4.0 исправлены недочеты связанные с сортировкой результатов запроса WP_Query, когда сортировка идет по нескольким колонкам одновременно. Сортировка при получении результатов в WP_Query ...

Сжатие стилей, скриптов и html с помощью Autoptimize

Обновление: Что-то в последнее время разочаровался немного этим плагином. С этого сайта его пришлось удалить, потому что он создает лишние загрузки. Например, если у вас есть динамичный скрипт на ...

Сохранение позиции скролла визуального редактора при сохранении записи

Не актуально с версии WordPress 4.0. Маленький, но удобный плагин; который невидим, но делает свое дело; который занимает место в разделе плагинов, но позволяет не бояться нажимать на кнопку ...

WP Media Cleaner: WordPress плагин для удаления неиспользуемых медиафайлов

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

Перенаправление на случайную запись в WordPress

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

UpToLike: сервис социальных кнопок и статистики по ним + плагин для WordPress

Наткнулся недавно на сервис социальной статистики UpToLike. О нем и расскажу немного в этой заметке. Это один из немногих сервисов, мимо которого я не смог пройти. Более того, я установил социальные ...

SIM-Networks: профессиональный хостинг в Германии

Приветствуем всех читателей этого сайта! Разрешите представиться – мы немецкая компания SIM-Networks. Мы занимаемся профессиональным, скалируемым, индивидуально конфигурируемым хостингом. ...

Печатающийся текст на экране (Javascript)

Скрипт имитирует печатание заголовков статей на экране в виде ссылки на саму статью. Заголовки указываются в скрипте и также указываются УРЛы к ним. Скрипт создает ссылки из переданных данных и ...

Выбора цвета в WordPress: Iris Color Picker

В этой заметке вы узнаете как подключать и использовать родной скрипт выбора цвета в WordPress: Iris Color Picker.

Интернет-шлюз – современный помощник админа

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

Подключение jQuery c CDN Google с динамическим определением версии

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

Openstat - удобный сервис статистики для сайта

В статье описан сервис статистики Openstat, не столь популярный как "Гугл Аналитика" или "Яндекс.Метрика", но широко используемый в интернете. Я постарался выделить все плюсы сервиса и описал их в ...

Убираем генерацию копий загружаемых изображений в WordPress

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

10 платных тем для интернет-магазина на WordPress

Статья подготовлена редакцией магазина шаблонов TemplateMonster.com С каждым днем в Рунете все большую популярность обретают интернет-магазины, и все это благодаря простоте их управления и, как ...

Мониторинг несуществующих страниц (плагин "404 Error Logger")

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

Сайтбилдер

https://ukit.com/ - сайтбилдер для создания бизнес-сайтов.

Реклама