Woocommerce产品图像被替换为图库插件

时间:2015-09-18 10:58:59

标签: wordpress woocommerce gallery product

首先,我想分析一下我的问题。使用Wordpress / Woocommerce我需要在产品库中的图像旁边添加视频。 Woocommerce根本不支持视频。

所以,我想安装一个支持图像和视频的额外图库插件。

现在,我想将特定的图片/视频库集合映射到特定产品。我还想在一个新区域中查看此图库集合,该区域不属于标准文本字段,如描述或简短描述。让我们说上面的主要产品图片。代表gallery集合id = 1的php代码如下所示:

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

问题是我需要库集合ID是可变的,如下所示:

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

其中X代表特定的图库集合。我怎么能将画廊收藏ID XXXX连接到我的产品页面XXXXX?

我有编程技巧,但我是wordpress代码逻辑的新手。

对我的问题有任何其他建议,比如可以用更好的产品库替换默认产品库的插件吗?

此致

2 个答案:

答案 0 :(得分:0)

我要么使用产品自定义字段作为Anand建议,要么创建一个带有必要输入字段的元数据(或根据您使用图库插件的方式下拉菜单)。

首先我创建一个metabox,然后在该元数据库中我将​​从插件中获取信息(图库ID和名称)。除此之外,您可以创建一个下拉列表。您应该能够像您建议的那样为每个产品选择该元数据的ID。例如,像这样的东西可以工作:

<?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中,它应该会在你的woocommerce产品页面上显示一个名为“选择图库”的元数据框,并带有一个空的下拉列表。

我没有填写您从创建图库的插件中获得的选项,但它不应该太难。

答案 1 :(得分:0)

一种方法是绑定产品页面ID和图库ID。如果您可以更改图库的ID,请将其更改为与产品页面的ID相匹配。现在,您可以使用以下两个示例创建短代码。

// 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是插件的链接,可显示管理页面上的大部分ID。

另一个是在编辑产品管理页面(例如名为gallery_id)中创建Custom Field(后元),并保存要使用的库的ID。要创建短代码,请使用get_post_meta()函数检索已保存的帖子元。

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

要获取图库ID,请使用$post->ID$product->idget_the_ID()函数,后者仅在循环内。