标签: WordPress插件开发

  • WordPress WooCommerce不显示价格 不显示购物车按钮

    不显示价格

    不显示价格,去掉价格字段即可 把代码放在主题的functions.php下

    //Hide price
    add_filter( 'woocommerce_get_price_html', 'woocommerce_hide_price' );
    function woocommerce_hide_price( $price ){
        return '';
    }

    去掉购买按钮

    //Hide buy button
    add_action( 'init', 'woocommerce_hide_buy_button' );
    function woocommerce_hide_buy_button(){
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }

    wc-ajax

    没有购买按钮,就无法向购物车中添加任何产品,购物车页面可有可无。
    如果完全不需要购物功能,将WooCommerce的购物车、结账等页面删除即可(此项未亲测)。

    在实际的使用过程中,会发现”wc-ajax = get_refreshed_fragments”的加载时间为1.5秒,然后这并不是必须的。并且延缓了网站的加载速度。可以加入代码:

    add_action( 'wp_print_scripts', 'de_script', 100 );
    function de_script() {
        wp_dequeue_script( 'wc-cart-fragments' );
        return true;
    }

    删除产品架构标记

    /**
     * 从“产品类别”和“商店”页面中删除生成的产品架构标记。
     */
    function wc_remove_product_schema_product_archive() {
    	remove_action( 'woocommerce_shop_loop', array( WC()->structured_data, 'generate_product_data' ), 10, 0 );
    }
    add_action( 'woocommerce_init', 'wc_remove_product_schema_product_archive' );
  • WordPress 删除WooCommerce商品详情评论选项卡

    使用wordpress建设网站时,会遇到不想像显示产品评论 信息选项卡太多内容,如何从WooCommerce单一产品页面中删除描述和评论标签。有时我们需要从单一产品页面中删除产品描述和产品评论标签,以使单个产品页面简单而令人印象深刻,或者我们不希望该用户将分享关于网站上列出的产品的评论。如何删除WooCommerce中的描述,评论和其他信息选项卡:

    在functions.php文件的末尾使用下面的代码。

    add_filter( 'woocommerce_product_tabs', 'wcs_woo_remove_reviews_tab', 98 );
    function wcs_woo_remove_reviews_tab($tabs) {
        unset($tabs['reviews']);
        return $tabs;
    }

    此外,要删除额外的信息选项卡,然后使用下面的你的functions.php文件:

    add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );
    function woo_remove_product_tabs( $tabs ) {
        unset( $tabs['description'] ); // Remove the description tab
        unset( $tabs['reviews'] ); // Remove the reviews tab
        unset( $tabs['additional_information'] ); // Remove the additional information tab
        return $tabs;
    }
  • WordPress获取分类法对象数据函数:get_term

    WordPress获取分类法对象数据函数:get_term

    WordPress函数get_term可以获取任何分类法对象数据,例如分类、标签和自定义分类法。

    get_term( int|WP_Term|object $term, string $taxonomy = '', string $output = OBJECT, string $filter = 'raw' )

    函数参数

    $term

    整数

    分类法的ID

    $taxonomy

    字符串

    分类法的名称

    $output

    字符串,默认值:OBJECT

    返回的数据类型,默认返回对象,可选值:

    • OBJECT:默认值,以对象的形式返回数据;
    • ARRAY_A:以关联数组的形式返回数据;
    • ARRAY_N:以数字数组的形式返回数据。

    $filter

    字符串,默认值:raw

    对数据使用函数sanitize_term进行字段过滤

    函数返回值

    WP_Term Object
    (
        [term_id] => 5
        [name] => 开发
        [slug] => develop
        [term_group] => 0
        [term_taxonomy_id] => 5
        [taxonomy] => category
        [description] => 分类描述
        [parent] => 0
        [count] => 220
        [filter] => raw
    )

    函数使用示例

    $term = get_term(12, 'post_tag');
    echo '<li><a href="' . get_tag_link($term->term_id) . '">' . $term->name . '</a></li>';

    扩展阅读

    get_term()函数位于:wp-includes/taxonomy.php

  • WordPress 指定Page类型首页 获取首页ID

    WordPress 指定Page类型首页 获取首页ID

    当我们开发WordPress的主题或者插件时,有时指定了某个page类型页面来作为首页。

    这时使用 get_the_ID() 函数则无法获取当前id,需要使用如下代码来获取page id:

    $pageID = get_option('page_on_front');

  • 设置WordPress站点绑定多域名访问

    设置WordPress站点绑定多域名访问

    WordPress通过简单修改wp-config.php文件来实现WordPress博客支持绑定多个域名及访问。

    在未修改wp-config.php之前WordPress博客默认是不能实现多个域名独立访问的,即使我们绑定了多个域名,访问时也会自动跳转到安装站点时默认的域名,就连同一个域名带www和不带www都是自动跳转到默认域名。那如果我们需要WordPress绑定多个域名,并且都能度独立访问怎么办?

    要想实现WordPress绑定多个域名,并且都能独立访问也不难。我们只需修改wp-config.php文件即可,在站点根目录找到“wp-config.php”文件,然后根据自己需要添加下面任意一段代码即可。

    一、实现任意域名访问

    说明:在wp-config.php文件中加下面代码,就能实现绑定解析的域名都能正常访问博客,而且不会串联到其他域名。

    define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
    define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);

    二、限制特定域名访问

    也可以只指的某些域名可以访问。注意把“$domain = array(“www.twbweb.com”, “www.webhome.wang”, “www.cqycl.com”);”括号内的域名改成你自己需要绑定的域名。这样就可以设置成你添加的这几个域名能正常访问。而其他未添加的域名则无法访问。

    $domain = array("jiloc.com", "www.hubjj.com");
    if(in_array($_SERVER['HTTP_HOST'], $domain)){
        define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
        define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
    }
  • WordPress 常用函数 / wp_unslash

    WordPress 常用函数 / wp_unslash

    简介

    删除字符串或字符串数​​组中的反斜杠。

    该函数调用 stripslashes_deep 进行反斜杠删除处理。

    用法

    <?php wp_unslash( $value ) ?>

    参数

    $value
    (string|string[]) (required) 将要删除反斜杠的字符串或者字符串数组
    Default: None

    返回值

    (string|string[])
    已删除反斜杠的值

    实例

    <?php
    echo wp_unslash($_SERVER['post_password']);
    ?>
  • WordPress 安全过滤数组 内容

    WordPress 安全过滤数组 内容

    WordPress在日常主题插件开发中,保存内容时需要使用 sanitize_text_field 函数来保证数据的安全。

    Clean everything, check everything, escape everything, and never trust the users to always have input sane data. After all, users come from all walks of life.

    但是当我们需要保存一个数组时,比如多个input框,使用同一个name时,就需要用到。这里我们写一个具体的函数

    function sanitize_text_or_array_field($array_or_string)
    	{
    		if (is_string($array_or_string)) {
    			$array_or_string = sanitize_text_field($array_or_string);
    		} elseif (is_array($array_or_string)) {
    			foreach ($array_or_string as $key => &$value) {
    				if (is_array($value)) {
    					$value = $this->sanitize_text_or_array_field($value);
    				} else {
    					$value = sanitize_text_field($value);
    				}
    			}
    		}
    		return $array_or_string;
    	}
  • WordPress 自定义文章类型 使用默认Category 翻页bug 修复 图文教程

    WordPress 自定义文章类型 使用默认Category 翻页bug 修复 图文教程

    在日常开发中,注册了自定义的文章类型,但是使用的还是默认的category分类,我们使用固定链接格式 %category%/%postname% ,翻页格式 category-name/page/2 就会出现404的错误。WordPress 会将 page 默认为post类型的文章名 , 将会返回404错误页面。

    下面我们给出修正代码:

    
    function remove_page_from_query_string($query_string)
    {
        if (isset($query_string['name']) && $query_string['name'] == 'page' && isset($query_string['page'])) {
            unset($query_string['name']);
            $pagePart = explode('/', $query_string['page']);
            $query_string['paged'] = end($pagePart);
        }
        return $query_string;
    }
    add_filter('request', 'remove_page_from_query_string');
    function fix_category_pagination($qs)
    {
        if (isset($qs['category_name']) && isset($qs['paged'])) {
            $qs['post_type'] = get_post_types(array(
                'public'   => true,
                '_builtin' => false
            ));
            array_push($qs['post_type'],'post');
        }
        return $qs;
    }
    add_filter('request', 'fix_category_pagination');
  • WordPress 创建自定义文章类型 禁用Add New 新增/添加功能

    WordPress 创建自定义文章类型 禁用Add New 新增/添加功能

    前篇我们写了 WordPress插件开发 移除 Edit | Quick Edit | Trash | View 功能 图文教程 ,即使是这样,但是创建自定义文章时依然会有Add New按钮出现,下面我们给出自定义文章类型,如何禁止Add New按钮

    $args = array(
        'label'               => __( 'Custom Post Type', 'text_domain' ),
        'description'         => __( 'Custom Post Type', 'text_domain' ),
        'capability_type' => 'custom_post_type',
        'capabilities' => array(
            'create_posts' => false,//这里禁用创建功能
        ),
    );
    register_post_type( 'custom_post_type', $args );
  • WordPress插件开发 移除 Edit | Quick Edit | Trash | View 功能 图文教程

    WordPress插件开发 移除 Edit | Quick Edit | Trash | View 功能 图文教程

    通常我们在WordPress开发中都会使用到注册新文章类型,这次遇到了需要禁用Dashboard lists 列表文章的『 编辑 | 快速编辑 | 回收站 | 查看 』功能,我们这里记录一下代码片段

    add_filter( 'post_row_actions', 'remove_row_actions', 10, 1 );
    function remove_row_actions( $actions )
    {
        if( get_post_type() === 'post' ){
            unset( $actions['edit'] );
            unset( $actions['view'] );
            unset( $actions['trash'] );
            unset( $actions['inline hide-if-no-js'] );
        }
        return $actions;
    }
  • WordPress 主题插件开发 WP_DEBUG true 无法显示错误 调试记录过程

    WordPress 主题插件开发 WP_DEBUG true 无法显示错误 调试记录过程

    近日在WordPress主题插件开发时,出现了:此站点正遇到技术问题.但是我我查了wp-config.php 里面的 WP_DEBUG 选项为 ture ,按理来讲应该会显示当前的php错误原因才对。

    同样,检查了php.ini的配置 display_erros = on 。为什么显示不了错误原因的。

    后来查了资料发现,可能是 Query Monitor 插件的问题导致的。后来我们把整个插件文件夹/wp-content/plugins/更名为别的,再次访问页面。显示出了错误原因。

  • WordPress 多语言 WPML 插件 自定义字段 翻译

    WordPress 多语言 WPML 插件 自定义字段 翻译

    我们在开发WordPress主题开发中,会需要用到多语言的版本。

    网上已经有很多介绍 WordPress 多语言的插件了,比如 Polylang 和 WPML 等强大的多语言插件,但是只是介绍,很快都是能掌握怎么使用。今天我们要说的是如何使用 Polylang 插件来实现主题选项中字段的翻译。

    WordPress多语言插件WPML在Polylang之前就已经创建了,因此对于一些插件和主题集成很好。WPML语言配置文件 wpml-config.xml已经可以翻译主题选项中的字段,Polylang 也支持 wpml-config.xml 文件的配置,而且 Polylang 的工作效率几本可以完成很多主题或者插件的翻译工作,所以我们创建一个 wpml-config.xml,添加以下代码到文件中:

    <wpml-config>
        <custom-fields>
            <custom-field action="copy">quantity</custom-field>
            <custom-field action="translate">custom-title</custom-field>
        </custom-fields>
        <custom-types>
            <custom-type translate="1">book</custom-type>
            <custom-type translate="1">DVD</custom-type>
        </custom-types>
        <taxonomies>
            <taxonomy translate="1">genre</taxonomy>
        </taxonomies>
        <admin-texts>
           <!--my_themes_options 为主题选项的全局变量名-->
            <key name="my_themes_options">
               <!--其中其它名称则是选项的 ID-->
                <key name="option_name_1" />
                <key name="option_name_2" />
                <key name="options_group_1">
                    <key name="sub_option_name_11" />
                    <key name="sub_option_name_12" />
                </key>
            </key>
            <key name="simple_string_option" />
        </admin-texts>
    </wpml-config>

    将wpml-config.xml文件放在主题或者 Polylang 插件的根目录,再前台插件后台『语言——字符串翻译』中进行翻译即可,如下图:

WeChat
↑