标签: WordPress主题开发

  • WordPress开发wp_ajax_{$action}和wp_ajax_nopriv_{$action}的区别

    WordPress开发wp_ajax_{$action}和wp_ajax_nopriv_{$action}的区别

    用admin-ajax.php来处理Ajax请求

    Ajax请求应该被指向wp-admin/admin-ajax.php, 文件名中的”admin”可能会引起困惑, 但是不管是前台的还是后台的Ajax请求都是在admin-ajax.php处理的.
    向admin-ajax.php发送请求的时候, 有一个必须的参数是action, 因为admin-ajax.php需要根据用户是否登陆了来触发不同的hooks

    // 如果没登陆, 会触发这个hook
    do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
     
    // 如果登陆了, 会触发这个hook
    do_action( 'wp_ajax_' . $_POST['action'] );

    发出Ajax请求的代码大概如下:

    jQuery.post(
           MyAjax.ajaxurl,
           {
                action : 'myajax-submit',
                postID : MyAjax.postID
           },
           function( response ) {
                alert( response );
           }
    );

    现在, 我们只需要在我们的主题文件中处理一下Ajax请求, 并不需要在单独的文件中来处理

    add_action( 'wp_ajax_nopriv_myajax-submit', 'myajax_submit' );
    add_action( 'wp_ajax_myajax-submit', 'myajax_submit' );
     
    function myajax_submit() {
    	$postID = $_POST['postID'];
    	$response = json_encode( array( 'success' => true ) );
     
    	header( "Content-Type: application/json" );
    	echo $response;
     
    	// 这个很关键啊有木有: 别忘记 "exit"
    	exit;
    }
  • 上海淞江减震器集团网站

    上海淞江减震器集团网站

    上海淞江减震器集团有限公司是一家研发、生产、销售工业减震器的集团性企业,在石油、化工、冶金、电力、建筑、热力、供水等行业具有很高的知名度及影响力,产品质量一直是淞江集团追求的目标

  • WordPress 通过自定义分类法获取自定义文章类型的相关文章

    WordPress 通过自定义分类法获取自定义文章类型的相关文章

    有时候我们需要为网站添加一个自定义文章类型,但是当访问此文章类型页面时,如何获取相关联的文章呢?请看以下代码:

    $terms = get_the_terms($post->ID, 'product_tags', 'string');
    $term_ids = wp_list_pluck($terms, 'term_id');
    $second_query = new WP_Query(array(
        'post_type' => 'products',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_tags',
                'field' => 'id',
                'terms' => $term_ids,
                'operator' => 'IN' //Or 'AND' or 'NOT IN'
            )
        ),
        'posts_per_page' => 3,
        'ignore_sticky_posts' => 1,
        'orderby' => 'rand',
        'post__not_in' => array($post->ID)
    ));
    if ($second_query->have_posts()) {
        while ($second_query->have_posts()) : $second_query->the_post();
        //loop
        endwhile;
        wp_reset_query();
    }
  • WordPress Advanced Custom Fields(ACF)获取 自定义分类法 自定义字段

    WordPress Advanced Custom Fields(ACF)获取 自定义分类法 自定义字段

    在WordPress的模板主题插件开发中,我们使用Advanced Custom Fields(ACF)插件设置自定义分类法的自定义字段时,在模板或插件中可以使用如下代码来获取值

    get_field('bg_img', $term->taxonomy.'_'.$term->term_id);
  • WordPress 分类法 get_terms 函数 自定义字段排序

    WordPress 分类法 get_terms 函数 自定义字段排序

    我们在实际WordPress模板插件开发中,可能需要用到分类法的自定义字段的排序,这里我们使用get_terms函数,自定义字段名:ranking

    不管ranking有没有值,都能出所有的对应分类结果,下面我们记录一下代码段:

    $taxonomy_name = 'products';
    $args = array(
        'taxonomy' => $taxonomy_name,
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'hide_empty' => false,
        'hierarchical' => false,
        'parent' => 0,
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => 'ranking',
                'type' => 'NUMERIC',
            ), array(
                'key'           =>  'ranking',
                'compare'      => 'NOT EXISTS',
            )
        ),
    );
    $terms = get_terms($args);

  • Module 模块化多功能WordPress企业主题

    Module 模块化多功能WordPress企业主题

    Module是一款多功能的wordpress主题,正如其名字一样,我们首次将首页所有内容全部模块化,并可配合我们Themer框架的可视化工具实现模块的自由拖拽组合,构建不同风格的网站。除了模块化的突破,在多语言切换的支持上我们也下了功夫,Module主题可以完美兼容WPML插件实现多语言切换功能,兼容WooCommerce插件实现在线商城功能,支持Ultimate Member插件实现会员注册登录功能。

    购买地址:https://www.jiloc.com/go/wpcom

    主题简介

    1. 响应式设计,兼容手机和平板等移动设备;
    2. 首页幻灯片大图,可设置是否全屏、是否置顶(与头部融合)、高度等;
    3. 自主开发Themer框架,支持后台自定义面板设置;
    4. 可视化页面布局拖拽生成工具(可视化页面拖拽生成工具使用教程);
    5. (新)支持WooCommerce插件,可实现商城功能;
    6. (新)支持Ultimate Member插件,可实现会员注册登录功能;
    7. (新)一键导入演示数据(查看详情);
    8. (新)缩略图片延迟加载(lazyload),提高页面加载速度;
    9. (新)未设置特色图片自动获取文章首张图片作为缩略图(图片需为本地上传的图片);
    10. (新)支持第三方社交登录:QQ登录和微博登录;
    11. 主题颜色风格自定义设置,可以随意设置网站配色风格;
    12. 首页模块选择,目前支持的模块:
      • 全屏模块;
      • 栅格布局;
      • 百度地图;
      • 自定义内容;
      • 客户案例;
      • 文字简介;
      • 特色介绍;
      • 热门产品;
      • 图文混排;
      • 新闻动态;
      • 产品展示;
      • 客户评价;
      • 服务内容;
      • 幻灯滑块;
      • 视频;
      • Slider Revolution(需Slider Revolution插件支持)
    13. (新)强大的SEO优化功能,可自定义标题、描述和关键词,也可支持懒人模式自动获取;
    14. 融入FontAwesome字体图标库,支持多达600+个字体图标;
    15. 自带多种小工具(持续增加中);
    16. 文章页面相关文章/产品展示;
    17. 页面自定义banner设置;
    18. 支持首页页脚友情链接显示;
    19. 支持在线客服/微信二维码/分享/返回顶部悬浮层;
    20. (新)菜单显示位置设置,可以设置靠左还是靠右显示;
    21. 支持自定义CSS样式设置;
    22. 支持谷歌字体链接和头像链接替换,加快网站打开速度;
    23. 产品缩略图自动智能裁剪功能;
    24. 无限页面边栏添加;
    25. 三级下拉菜单支持;
    26. 依赖插件一键安装和更新功能;
    27. 文章评论功能(可选择开启或关闭);
    28. 文章分类模板可选择(产品模板、产品模板(无边栏)、列表模板、默认模板);
    29. 页面模板选择(无边栏、评论模板、自定义页面模板);
    30. 产品列表多种显示风格设置;
    31. 产品详情图片放大器、参数详情功能;
    32. 支持文章段落缩进设置;
    33. 基于Bootstrap前端框架开发;
    34. 文章组件添加功能(基于shortcode开发);
    35. (新)手机端底部固定浮动栏,可添加拨号联系等选项;
    36. 主题兼容IE8+,Chrome,Firefox,Safari,360浏览器等国内主流浏览器,针对Mac OS X优化显示;
    37. 浏览器兼容提示,针对低版本IE浏览器会显示升级提示;
    38. 新版本实时推送,在线一键更新,享受WordPress官方主题库的升级体验;
    39. 针对响应式网站的移动端SEO优化;
    40. HTTPS优化,全面支持HTTPS网站;
    41. 支持子主题扩展;
    42. 支持语言包,内置中英文语言,可以通过编辑语言包支持更多语言,适合外贸网站使用;
    43. 支持WPML多语言切换功能;
    44. 主题使用在线文档;
    45. 一次购买,享受永久更新服务。

    运行环境

    • PHP 5.2+,兼容PHP 7.x
    • MySQL 5.0+

    主题截图

    默认首页:

    主题设置:

  • 关闭WordPress新用户注册邮件通知

    关闭WordPress新用户注册邮件通知

    WordPress自带有邮箱重置密码以及新用户注册邮件通知功能,但很多时候我们并不想要这些个鸡肋的功能。这里我们通过WordPress的Hook机制很轻松关闭它们。

    新用户注册邮件通知

    注册时的邮件通知,一共两封邮件:一个是向管理员发邮件通知,一个向用户发邮件通知。随着网站时间的推移,站长对注册用户也没啥太在意的。管理员邮件是没必要的存在故关闭之,如果没加验证遇到机器人垃圾注册,会被这些通知邮件撑爆邮箱,对于个人博客这个功能是安心关闭的。向用户发邮件通知这个功能其实也无所谓,如果自己有花时间专门做了欢迎邮件模板,想要好一点的体验的话,也可以保留。

    通过邮箱重置密码

    站长是个人博客忘记了密码,走邮箱找回密码很鸡肋有木有?同时存在邮箱账号被盗导致整站被黑的安全隐患,作为有权限直接操作数据的个人站长为啥要走一波邮件这种绕弯路的操作?让我们把对外开放会导致整站沦陷,却可有可无的功能直接屏蔽掉吧!

    关闭WordPress邮箱重置密码以及新用户注册邮件通知的代码实现

    //关闭新用户注册通知站长的邮件
    add_filter( 'wp_new_user_notification_email_admin', '__return_false' );
    //关闭新用户注册用户邮件通知
    add_filter( 'wp_new_user_notification_email', '__return_false' );
    //禁止用户密码重置
    apply_filters( 'allow_password_reset', '__return_false' );
    

    代码使用方法

    复制以上代码直接扔进当前WoresPress主题的 function.php 文件中即可。

  • 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']);
    }
WeChat
↑