2015-09-18 2 views
0

Сначала я хотел бы проанализировать мою проблему. Использование Wordpress/Woocommerce Мне нужно добавить видео рядом с изображениями в галерее продукта. Woocommerce вообще не поддерживает видео.Изображения продуктов Woocommerce заменены плагином галереи

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

Теперь я хочу сопоставить определенную коллекцию фото/видео галереи с конкретным продуктом. Я хочу также просмотреть эту галерею в новом регионе, который не входит в стандартные текстовые поля, такие как описание или краткое описание. Давайте скажем выше основного изображения продукта. Код PHP, который представляет коллекцию галереи ID = 1 выглядит следующим образом:

<?php echo do_shortcode('[wonderplugin_gallery id="1"]'); ?> 

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

<?php echo do_shortcode('[wonderplugin_gallery id="X"]'); ?> 

где X represnt конкретной коллекции галереи. Как я могу подключить идентификатор коллекции галереи XXXX к моей странице продукта XXXXX?

У меня есть навыки программирования, но я новичок в логике кода Wordpress.

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

С уважением,

+0

Вам необходимо добавить пользовательские поля в свой продукт, см. Следующую статью: http://www.remicorson.com/mastering-woocommerce-products-custom-fields/ –

+0

Спасибо, что я уже сделал это, и он сработал. Единственная проблема - это двойные кавычки из параметров. Если id param имеет кавычки, тогда плагин не может найти коллекцию галереи, используя SQL-запрос. Это ошибка или я должен избегать таких специальных символов? – Maverick

ответ

0

Я либо использовать продукт пользовательские поля, как предложил Ананд, или создать METABOX с необходимыми полями ввода (или выпадающие в зависимости от того, как вы используете плагин галереи).

Сначала я создал metabox, и в этом метабоксе я вытащил информацию из плагина (идентификаторы галереи и имена). Из этого вы можете создать раскрывающийся список. Вы должны иметь возможность выбрать идентификатор из этого метаболизма для каждого продукта, как вы предложили. Например что-то подобное может работать:

<?php 

if (! function_exists('product_add_meta')){ 
    function product_add_meta(){ 
     add_meta_box("gallery_dropdown", "Select Gallery", "product_gallery_meta_box", "product"); 
    } 
} 
add_action("admin_init", "product_add_meta"); 

if (! function_exists('product_gallery_meta_box')){ 
    function product_gallery_meta_box($post){ 
     $post_types = array('product');  //limit meta box to certain post types 
     global $post; 
     $product = get_product($post->ID); 
     $values = get_post_custom($post->ID); 
     $gallery = (isset($values['gallery'][0])) ? $values['gallery'][0] : ''; 
     wp_nonce_field('my_meta_box_nonce', 'meta_box_nonce'); 
     ?> 
     <p> 
      <select name="gallery" id="gallery"> 
      //example of how the option should look 
      <option value="<?php echo $gallery_id; ?>" <?php selected($gallery, $gallery_id); ?>><?php echo $gallery_name; ?></option> 
       <?php 
       //pull options from plugin here and create an option dropdown with foreach 
       ?> 
      </select> 
     </p> 
     <?php 
    } 
} 

if (! function_exists('product_gallery_save_meta_box')){ 
    function product_gallery_save_meta_box($post_id){ 
     if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ 
      return; 
     } 
     if(!isset($_POST['gallery']) || !wp_verify_nonce($_POST['meta_box_nonce'], 'my_meta_box_nonce')) { 
      return; 
     } 
     if(!current_user_can('edit_pages')) { 
      return; 
     } 
     if(isset($_POST['gallery'])){ 
      update_post_meta($post_id, 'gallery', wp_kses($_POST['gallery'] ,'')); 
     } 
    } 
} 
add_action('save_post', 'product_gallery_save_meta_box'); 

Если вы поместите это в functions.php, она должна показать METABOX под названием «Select Галерея» с пустым выпадающим списком на странице WooCommerce продукта.

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

+0

Я использовал настраиваемое текстовое поле для сохранения всего короткого кода, а не только идентификационного номера. В этом случае, как вы можете прочитать мой предыдущий ответ, у меня проблема с двойными кавычками в номере id. Плагин галереи может найти коллекцию в db. Это ошибка плагина? Если я сохраню короткий код без кавычек в параметре id, отлично работает. – Maverick

+0

Вы пытались отменить цитаты ' '? Существует отличный ответ о цитатах в php [здесь] (http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php) –

+0

Нет, но я хочу просто скопировать/вставить весь короткий код, а не только номер идентификатора в свое текстовое поле. С несколькими словами я не хочу обрабатывать короткий код сгенерированного плагина. Я могу попытаться отредактировать исходный код плагина, так как считаю, что это ошибка. Я сделаю несколько тестов, прежде чем принять окончательное решение о том, что здесь может быть неправильным. – Maverick

0

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

// outside the loop use global (uncomment appropriate statement) 
// global $product; 
// global $post; 

do_shortcode(sprintf('[wonderplugin_gallery id="%d"]', $product->id)); 
do_shortcode(sprintf('[wonderplugin_gallery id="%d"]', $post->ID)); 

HERE ссылка для плагина, который показывает большинство идентификаторов на страницах администрирования.

Другим является создание Custom Field (post meta) на странице редактирования продукта продукта (например, имя gallery_id) и сохранение там идентификатора используемой галереи. Для создания короткого кода используйте функцию get_post_meta(), которая извлекает сохраненную мета-запись.

do_shortcode(sprintf('[wonderplugin_gallery id="%d"]', get_post_meta($post->ID, 'gallery_id', true))); 

Чтобы получить идентификатор мета галереи использовать $post->ID, $product->id или get_the_ID() функцию, последний только внутри цикла.