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

没有插件的电子商务安培版本
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
代码运行次数:0
运行
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
代码运行次数:0
运行
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
代码运行次数:0
运行
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
代码运行次数:0
运行
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
代码运行次数:0
运行
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

复制
相关文章
用Nunit测试通讯程序
    对于Nunit,我是个纯粹的新手,没想到,第一个练手的,居然是一个通讯程序。难度略微大了点。我的通讯程序是一个类似通讯服务器的程序,能够监听和维持多个连接,并实现向任意连接的收发数据。因为原来实现过类似的东西,这次做的步子又前进了一些,把整个服务器的这种工作模式抽象出来了,做成了一个与具体业务无关的通讯层。我只是按照自己的想法把代码写了出来,上层还有很多逻辑层代码,如果在原来,就得等全套代码都好了,才能开始进行测试和修改。不过,现在我有Nunit,更准确的说,是有了Testdriven.Net,终于
用户1075292
2018/01/23
7660
C#中的单元测试
C#程序可以使用NUnit框架进行单元测试,NUnit是.NET语言的一个测试框架,和Java语言的JUnit同属于XUnit。
卡尔曼和玻尔兹曼谁曼
2019/01/25
2.2K0
.NET 基金会项目介绍-xUnit.net
xUnit.net 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
1.2K0
Jenkins之Nunit的应用
一、在Jenkins中安装Nunit插件 进入jenkins的插件管理模块,下载Nunit插件。此步骤不做截图说明 二、引用nunit.console的nuget包 通过项目引用Nunit.conso
sam dragon
2020/05/18
6870
Jenkins之Nunit的应用
Nunit使用心得
测试中,遇到问题,修改完后,无论当前在哪个位置,都可以用Repeat Test Run运行刚才的测试,很方便。 如果多个测试共用一个关键资源,如数据库的连接,监听服务器等,可以用[TestFixtureSetUp]定义一个全局的初始化处理。 测试的方法多种多样,不一定拘泥于比较大小,在某些并发环境下,可以采用其他的途径。比如,我测试通讯过程,测试本身只是一个死循环,睡眠一段时间,醒来就看看某些关键量是否达到要求。然后,定义一个时间(Timespan),以该变量在这个时间内是否达到要求作为测试的依据。 还有,
用户1075292
2018/01/23
5480
C# NUnit的安装
NUnit 是一个单元测试框架,专门针对于.NET来写的。NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等。最重要的一点是它适合于所有.NET语言。
zls365
2021/03/16
1K0
Gallio 自动化测试平台
Gallio是MbUnit的作者组织开发的一个开源项目,非常值得从事测试开发的同学们的注意。 根据Gallio网站的描述:Gallio自动化平台是一个开放的,可扩展,和中立的系统,为.NET提供了一个公共的对象模型,运行时的服务和工具(例如测试运行器),在任何数量的测试框架中起协调作用。 Gallio平台的目标是促进建立一个丰富的社区和厂商所开发的大量的测试工具之间互操作的生态系统,以便处理比单个独立测试框架更广泛的测试需求。单元测试、集成测试、性能测试,甚至半自动化的测试都可以利用公共的基础设施。此外还需
张善友
2018/01/29
1.6K0
Mono 3.2 上跑NUnit测试
NUnit是一款堪与JUnit齐名的开源的回归测试框架,供.net开发人员做单元测试之用,可以从www.nunit.org网站上免费获得,最新版本是2.5。Mono 3.2 源码安装的,在/usr/bin/ 下面有2.4.8 版本: [azureuser@mono /]$ /usr/bin/nunit-console4 NUnit version 2.4.8 Copyright (C) 2002-2007 Charlie Poole. Copyright (C) 2002-2004 J
张善友
2018/01/19
6650
TestDriven.NET (2.7 Beta) 支持Silverlight/CoreCLR
Silverlight 1.1,在这个微软已经提供下载alpha版本中,包含了一个缩减版的CLR,还有最新发布的Dynamic Language Runtime (DLR)。Silverlight将被插入Internet Explorer、Mozilla和Safari浏览器中,这意味着缩减版的CLR也能够运行在这些平台上。 微软将这个缩减的CLR称为“Core CLR”(核心CLR)(这个核心CLR的代码代号是Tolesto,微软表示这恰巧是一个环绕土星的卫星的名字。)Core CLR将包含garbage
张善友
2018/01/30
5120
对比MS Test与NUnit Test框架
项目中进行Unit Test时,肯定会用到框架,因为这样能够更快捷、方便的进行测试。
跟着阿笨一起玩NET
2018/09/19
3.5K0
hash冲突以及hash冲突的解决方法
首先说一下hash冲突吧,hash冲突在hash表中一般情况下是会遇到的; hash冲突指的是你在向hash表中存数据时,首先要通过key值进行指定的hash算法进行计算,然后得到一个值,这个值就是你要将这个key对应的value存入的地址。但是在这个地址中已经有值存在,所以这个时候就发生了hash冲突,不同的key通过hash算法得到了对应的同一个值。
全栈程序员站长
2022/11/07
1.2K0
解决hash冲突的几种方法_hashmap hash冲突
hash函数 首先来说hash函数,java中对象都已一个hashCode() 方法,那为什么还需要hash函数呢?hashCode是在jdk中是有符号int类型,这个一个很大的范围,如果散列表的数组能覆盖所有int值的话,就不需要hash函数了,当然内存不允许我们维护这么大的散列表。这时我们需要hash函数将原始hashCode映射到一个很小的数组上去。 常见的做法是取模法,也是jdk中的实现方式。
全栈程序员站长
2022/09/28
8280
解决hash冲突的几种方法_hashmap hash冲突
.NET 基金会项目介绍-NUnit Test Framework
NUnit Test Framework 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
newbe36524
2020/03/16
9510
JQuery的$命名冲突
在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法。然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突。下面以引入两个库文件jquery.js和prototype.js为例来进行说明。  第一种情况:jquery.js在prototype.js之后进行引入,如:
阳光岛主
2019/02/19
1.3K0
hash冲突解决和javahash冲突解决
线性,平方显然很容被人猜出规律,所以最终是随机,那么是不是存在随机会出现取模的值相等的情况?
ydymz
2018/12/24
1.3K0
SVN冲突
svn在提交的时候断网极容易出现org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir ------ "SVN 客户端异常:试图锁定一个已经锁定的目录"。
似水的流年
2019/12/08
5840
SVN冲突
svn在提交的时候断网极容易出现org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir ------ "SVN 客户端异常:试图锁定一个已经锁定的目录"。       这是什么错误呢?根据提示能够想到,我要提交代码的时候,SVN 所做的工作中有一个操作步骤是"锁定",所以才会有"Attempted to lock "这一步,至于"an already-locked dir",我忽然想
似水的流年
2018/01/18
9340
SVN冲突
使用NUnit在.Net编程中进行单元测试
原文地址:http://www.microsoft.com/china/community/Column/59.mspx 引言: 举一个可能会发生在你身边的事件将更能贴近实际,幸好我们现在就有一件在程序员看来非常普通的任务: 你今天第一天上班,你的项目经理拿给你一叠不算厚的文档,告诉你今天的任务是按照文档中的要求编写一个.Net类,可能因为任务并不复杂,所以他看上去非常的随意。 今天能否很好的完成任务对你来说非常特殊,你拿过来后快速略过了前面大段的项目介绍,因为你知道那些对你并不重要,印象中
菩提树下的杨过
2018/01/22
1.7K0
冲突域
先说人话:多N台计算机使连接在同一个集线器设备中,并同时往集线器发送数据要通过这个设备出去,但是这个设备同一时间内只能发送一个计算机的数据,所以会产生冲突。(便宜货就是问题多)
潇洒
2023/10/20
2010
#PY小贴士# git 的冲突
为什么我的 git 在 pull 更新线上最新代码的时候提示失败,然后发现代码里多了一些奇怪的内容:
Crossin先生
2020/01/16
3290
#PY小贴士# git 的冲突

相似问题

Testdriven.Net和NUnit异常

12

NUnit,TestDriven.Net:使用部分测试类复制测试结果

11

TestDriven.Net nunit.framework错误

30

NUnit、TestDriven.NET、WatiN和Specflow

13

.net 4中存在testdriven.net问题的nunit

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文