Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有插件的电子商务安培版本

没有插件的电子商务安培版本
EN

Stack Overflow用户
提问于 2018-03-29 23:19:32
回答 1查看 374关注 0票数 0

我有两个电子商务网站的产品页面:一个是由Woocommerce (在WordPress中)制作的,另一个是我用AMP编写的。

这里是WordPress页面,这里是AMP页面。没有考虑到这两个页面位于两个不同的子域上,我如何将移动用户重定向到页面的AMP版本?

有人问了一个类似的问题,但它只具体说明了如何为简单的页面,而不是产品页。

有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 00:13:29

要回答您的问题,如果您不想使用插件,就必须在主题functions.php中硬编码以下几行代码。

根据你的问题,让它发挥作用的方法如下

  1. 在产品后型WooCommerce中创建Metabox
  2. 将输入字段添加到创建的Metabox中
  3. 通过save_post动作钩子保存输入字段
  4. 输入每个产品的特定URL
  5. 从Product获取保存的数据,如果它是移动用户,则重定向。

步骤1:创建Metabox

代码语言:javascript
运行
AI代码解释
复制
//Create Metabox
function wc_49570125_register_meta_boxes() {
    add_meta_box('meta-box-id', __('Mobile Version URL', 'yourtextdomain'), 'wc_49570125_my_display_callback', 'product');
}

add_action('add_meta_boxes', 'wc_49570125_register_meta_boxes');

步骤2:添加输入字段

代码语言:javascript
运行
AI代码解释
复制
// Add Input Field
function wc_49570125_my_display_callback($post) {
    $get_id = $post->ID;
    $get_value = get_post_meta($get_id, 'wc_mobile_version_url', true);
    ?>
    <p>
        <label><?php _e('Mobile URL to Redirect', 'yourtextdomain'); ?></label>
        <input type="text" name="wc_mobile_version_url" value="<?php echo $get_value; ?>"/>
    </p>
    <?php
}

步骤3:保存输入字段

代码语言:javascript
运行
AI代码解释
复制
// save input field
function wc_49570125_save_meta_box($post_id) {
    $post_type = get_post_type($post_id);
    if ('product' != $post_type) {
        return;
    }
    if (isset($_POST['wc_mobile_version_url'])) {
        $mobile_version = $_POST['wc_mobile_version_url'];
        update_post_meta($post_id, 'wc_mobile_version_url', $mobile_version);
    }
}

add_action('save_post', 'wc_49570125_save_meta_box');

步骤4:将移动用户重定向到移动版本

代码语言:javascript
运行
AI代码解释
复制
// redirect input field

function wc_49570125_mobile_redirect() {
    global $product, $post;
    if (is_product()) {
        $get_id = $post->ID;
        $amp_location = get_post_meta($get_id, 'wc_mobile_version_url', true);
        if (wp_is_mobile() && $amp_location) {
            wp_redirect($amp_location);
            exit;
        }
    }
}

add_action('wp', 'wc_49570125_mobile_redirect');

步骤5:为Google添加可发现链接

代码语言:javascript
运行
AI代码解释
复制
function wc_49570125_amp_google_link() {
    global $product, $post;
    if (is_product()) {
        $get_id = $post->ID;
        $amp_location = get_post_meta($get_id, 'wc_mobile_version_url', true);
        if ($amp_location) {
            ?>
            <link rel="amphtml" href="<?php echo $amp_location; ?>"/>
            <?php
        }
    }
}

add_action('wp_head', 'wc_49570125_amp_google_link');

我测试了上面的代码,看起来效果很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49570125

复制
相关文章
.NET 基金会项目介绍-NUnit Test Framework
NUnit Test Framework 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
9620
通过Mono 在 Heroku 上运行 .NET 应用
英文原文:Running .NET on Heroku 中文原文:在 Heroku 上运行 .NET 应用 自从加入了Heroku之后,我就想在这个平台上运行.NET程序。现在我很高兴向大家宣布,我们已经有了一个可用的环境reasonably workable Mono buildpack。我的目标是能够在Windows上使用Visual Studio创建一个ASP.NET MVC解决方案去创建一个Heroku的应用程序。它能够使用git命令push Heroku,构建Heroku,应用部署在Mono和X
张善友
2018/01/29
3.3K0
在安卓手机上通过 Termux 运行编译/运行 .NET 应用
Termux 可谓安卓上的开发神器, 注意, 不是开发安卓应用, 是在安卓手机上做开发的神器, 它的官方简介如下:
beginor
2020/08/07
4.9K0
使用NUnit在.Net编程中进行单元测试
原文地址:http://www.microsoft.com/china/community/Column/59.mspx 引言: 举一个可能会发生在你身边的事件将更能贴近实际,幸好我们现在就有一件在程序员看来非常普通的任务: 你今天第一天上班,你的项目经理拿给你一叠不算厚的文档,告诉你今天的任务是按照文档中的要求编写一个.Net类,可能因为任务并不复杂,所以他看上去非常的随意。 今天能否很好的完成任务对你来说非常特殊,你拿过来后快速略过了前面大段的项目介绍,因为你知道那些对你并不重要,印象中
菩提树下的杨过
2018/01/22
1.8K0
Nunit使用心得
测试中,遇到问题,修改完后,无论当前在哪个位置,都可以用Repeat Test Run运行刚才的测试,很方便。 如果多个测试共用一个关键资源,如数据库的连接,监听服务器等,可以用[TestFixtureSetUp]定义一个全局的初始化处理。 测试的方法多种多样,不一定拘泥于比较大小,在某些并发环境下,可以采用其他的途径。比如,我测试通讯过程,测试本身只是一个死循环,睡眠一段时间,醒来就看看某些关键量是否达到要求。然后,定义一个时间(Timespan),以该变量在这个时间内是否达到要求作为测试的依据。 还有,
用户1075292
2018/01/23
5620
python selenium后台运行
from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') driver = webdriver.Chrome(chrome_options=chrome_options) driver.get('http://baidu.com')#打开百度首页,可以更换引号内的网址实现打开任一网址 print driver.title#在编辑器的终端可以看到网站的标题打印出来 driver.quit()#关闭Chrome浏览器,如果不写这句话浏览器就会停留在百度首页在后台运行不会关闭浏览器
用户5760343
2019/07/27
2.4K0
Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
根据statcounter统计,到2020年6月,Mozilla Firefox浏览器在全球浏览器市场中所占份额为4.25%,因此,对于每个Selenium测试用例,Mozilla Firefox浏览器都是不可避免的。 Mozilla开发人员推出了Geckodriver(也称为Selenium Firefox驱动程序),以帮助测试人员使用Firefox浏览器自动进行浏览器测试。
用户7466307
2020/07/20
9.4K0
Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
Jenkins之Nunit的应用
一、在Jenkins中安装Nunit插件 进入jenkins的插件管理模块,下载Nunit插件。此步骤不做截图说明 二、引用nunit.console的nuget包 通过项目引用Nunit.conso
sam dragon
2020/05/18
6990
Jenkins之Nunit的应用
用Nunit测试通讯程序
    对于Nunit,我是个纯粹的新手,没想到,第一个练手的,居然是一个通讯程序。难度略微大了点。我的通讯程序是一个类似通讯服务器的程序,能够监听和维持多个连接,并实现向任意连接的收发数据。因为原来实现过类似的东西,这次做的步子又前进了一些,把整个服务器的这种工作模式抽象出来了,做成了一个与具体业务无关的通讯层。我只是按照自己的想法把代码写了出来,上层还有很多逻辑层代码,如果在原来,就得等全套代码都好了,才能开始进行测试和修改。不过,现在我有Nunit,更准确的说,是有了Testdriven.Net,终于
用户1075292
2018/01/23
7820
.NET 通过 Autofac 和 DynamicProxy 实现AOP
  什么是AOP?引用百度百科:AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。实现AOP主要由两种方式,一种是编译时静态植入,优点是效率高,缺点是缺乏灵活性,.net下postsharp为代表者(这个是收费的)。另一种方式是动态代理,优缺点与前者相反,动态为目标类型创建代理,通过代理调用实现拦截。AOP能做什么,常见的用例是事务处理、日志记录等等。下面就讲讲Autofac怎么实现AOP,Autofac
晓晨
2018/06/22
1.9K0
python selenium 处理时间日期控件
测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现。
测试开发社区
2019/09/20
5.8K0
python selenium 处理时间日期控件
通过 selenium 和 flask 中转后利用 sqlmap 进行注入
前端提交登陆表单时数据包加密了, 而且有个 sign 字符串每次都不一样用于校验, 应该是用 js 加密
重生信息安全
2020/04/26
1K0
GM Cruise AV
先来目睹一波GM即将量产的No Pedals, No Steering Wheel 且达到Level 4等级的Cruise AV。
Defry
2022/04/19
7790
GM Cruise AV
QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.09.07更新】
最新下载地址: 自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01.25更新) QuickControl web控件集包含的控件 QuickControl web控件集——基本控件: 控件名称 说明 详细介绍 MyTextBox  继承TextBox,增加了几个属性,继承IControlMgr接口 进入 MyDropDownList  继承DropDownList,增加了几个属性,继承IControlMgr接口 进入 MyCheckBoxList  继承CheckBox
用户1174620
2018/02/26
3.3K0
安装和运行 .NET Core 版本的 PowerShell
Windows 自带一个强大的 PowerShell,不过自带的 PowerShell 一直是基于 .NET Framework 的版本。你可以下载安装一个 .NET Core 版本的 PowerShell,以便获得 .NET Core 的各种好处。包括跨平台,以及更好的性能。
walterlv
2023/10/22
4470
安装和运行 .NET Core 版本的 PowerShell
在 Mac 上通过 Docker 运行 Asp.net Core 简易教程
下载地址 https://download.docker.com/mac/stable/Docker.dmg
痴者工良
2021/04/26
1.4K0
使用 asp.net mvc和 jQuery UI 控件包
如果你使用asp.net mvc,而且使用的js库是jQuery, 那么一定别错过使用jQuery UI,使用jQuery UI 有个一套的mvc套件值得使用jQuery ASP.Net MVC Co
张善友
2018/01/19
1.6K0
使用 asp.net mvc和 jQuery UI 控件包
selenium ,webdriver 运行原理与机制
driver翻译过来是驱动,司机的意思。如果将webdriver比做成司机,竟然非常恰当。
赵云龙龙
2019/07/11
1.4K0
Lightweight Test Automation Framework之旅
Lightweight Test Automation Framework是ASP.NET QA团队开发的自动化集成测试框架,并且应用在ASP.NET QA团队的自动化测试产品中,目前最新版本是April Update,这个框架的作用与WatiN和Selenium类似,可操作浏览器对应用程序编写回归测试。根据ASP.NET QA团队博客上发布的Lightweight Test Automation Framework April Release,这个版本主要是修复bug和增加一些新特性,主要特性如下: 用户
张善友
2018/01/30
1.9K0
Lightweight Test Automation Framework之旅
.NET Timer控件基础用法
System.Timers.Timer aTimer =new System.Timers.Timer();  
用户5760343
2022/05/24
6630

相似问题

Cruise Control.NET、NUnit集成

12

NUnit .NET内核通过ReSharper运行

35

用于SVN和Cruise控件的ASP.NET项目构建脚本

21

使用NUnit和Selenium 2.11.0异常运行测试

11

Cruise Control.net和subversion问题

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档