WordPress 插件与 WooCommerce 产品页面冲突

Posted

技术标签:

【中文标题】WordPress 插件与 WooCommerce 产品页面冲突【英文标题】:WordPress Plugin Conflict with WooCommerce Product Page 【发布时间】:2015-11-09 10:15:29 【问题描述】:

我们的插件会在整个网站上显示一个红色的注册栏。仅在 Woo Commerce 页面上,注册栏将进入产品描述容器,如下所示:


这是它应该做的,与网站的其他部分一致:


这是插件的代码摘录:


/*Style sheet for the Signup Plugin
Teresa Light August 16, 2015
Version 1.0
*/

#main.clearfix.width-100
    padding-right:0px!important;
    padding-left:0px!important;


/* Overall Container */
signup  
  margin: auto;
  padding: auto 0px!important;
  font-size:80%;
  background: #d03925;
  text-align: center;  
  display: flex;  /* NEW, Spec - Opera 12.1, Firefox 20+ */
  display: -webkit-flex; /* NEW - Chrome */
  display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;

/* Begin Flex */
.flex-container 
  text-align: center;  
  display: flex;  /* NEW, Spec - Opera 12.1, Firefox 20+ */
  display: -webkit-flex; /* NEW - Chrome */
  display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
   -webkit-align-items: center;
   align-items: center;
   -webkit-justify-content: center;
   justify-content: center;


/* MOBIL FIRST */
.flex-container
   flex-direction: column;
   -webkit-box-flex-direction: column;
  -moz-box-flex-direction: column;
  -webkit-flex-direction: column;
  margin:0 0 5px 0;
  padding:15px;


/* DESKTOPS - go to a row for screens greater than 1000px */ 
@media screen and (min-width: 1024px) 
  .flex-container
   flex-direction: row;
   -webkit-box-flex-direction: row;
  -moz-box-flex-direction: row;
  -webkit-flex-direction: row;
  margin:0 10px;
  padding:10px 0;
  

/* End  Flex */

h3.signup-message, .signup-message
  margin: auto;
  padding:0;
  color: #ffffff !important;
  font-family: 'lato', sans-serif;
  font-weight: 500; 
  text-align:right;
  font-size:20px;
  line-height:30px;


#inf_field_FirstName, #inf_field_Email 
  border: 1px solid #d2d2d2;
  font-size: 15px;
  font-family: 'lato', sans-serif;
  color: #747474;
  padding: 15px 5px;
  width: 270px;


.ccg-button 
    border-width: 2px;
    border-style: solid;
    border-color:#ffffff;
    background: #d03925;
    color: #fff;
    font-family: 'lato', sans-serif;
    font-weight: 700;
    line-height: 20px;
    font-size:15px;
    cursor: pointer;
    padding: 13px 30px 13px 30px;

.ccg-button:hover, .ccg-button:focus, .ccg-button:active
    border-width:2px;
    border-style: solid;
    border-color:#d03925;
    color:#d03925;
    background: #ffffff;
<?php 
/*
Plugin Name: ccg-signup
Description:  Adds an eye-catching signup bar to the bottom of the page
Author: Teresa Light
Author URI: https://teresalight.com
Plugin URI: 
Version: 1.0
License: 
*/

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

// Register style sheet.
    add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );

/**
 * Register style sheet.
 */

  function register_plugin_styles() 
    wp_register_style( 'ccg-signup', plugins_url( 'ccg-signup/css/signup-bar.css' ) );
    wp_enqueue_style( 'ccg-signup' );
    

    add_filter( 'the_content', 'signup_bar' );

    function signup_bar($content)

$content.='';
$content.='
	<signup>
			<form>

		 		<div class="flex-container">
		 			<h3 class="signup-message">Get tips to start, fund and grow Your Great Business:</h3>
		 		</div> 

		 		<div class="flex-container">
		 			<input id="inf_field_FirstName"  name="inf_field_FirstName" type="text" placeholder="First Name*">
		 		</div>

				<div class="flex-container">
					<input style="margin:10px 0;"id="inf_field_Email" name="inf_field_Email" type="text" placeholder="Email*">
				</div>

				<div class="flex-container">
					<input class="input.flex-container ccg-button" type="submit" value="START NOW">
				</div>
			</form>
	</signup>';
$content.='';
return $content;
    

// Omit closing PHP tag to avoid "Headers already sent" issues.

已向 Themeforest 和 WooCommerce 提交了一张票,但我对收到两者的修复并不乐观,因为它是我们的插件。

任何帮助将不胜感激!谢谢。

【问题讨论】:

嗨@user2502479。您能否分享任何可能附加到该组件的样式 【参考方案1】:

我从未使用过 WooCommerce,但据我所知,您的注册栏直接位于内容之后。看起来该栏已附加到内容上,对于 WooCommerce 而言,这似乎是产品本身。

也许您想改为将注册栏与联系我们部分之前的操作挂钩。希望这是有道理的!

【讨论】:

我现在可以在 Woo Commerce 页面上使用它,但在网站的其他页面上却没有,所以这就是进步! 这段代码可以在 Woo Commerce 上运行,但不能在网站的其余部分上运行。我相信“联系我们”部分之前的操作因页面而异,但我还没有追求。这有效,但不适用于主页(尚未):感谢您的帮助。remove_action('woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10); add_action('woocommerce_after_main_content', 'signup_bar', 10); add_action('wp_footer', 'signup_bar', 10); 谢谢!它现在运行良好,但它是页脚下方的最后一个。我不知道如何让它首先出现,所以我现在正在研究。【参考方案2】:

与其过滤 the_content,不如使用 wp_footer 来确保您的注册栏位于页面底部。 WooCommerce 加载可能会影响您的布局的自定义内容包装器页眉和页脚。

另一种选择是使用钩子 woocommerce_after_main_content 在 woocommerce 页面底部额外加载您的插件

http://docs.woothemes.com/document/third-party-custom-theme-compatibility/

【讨论】:

我用这个动作代替了页脚,现在它不显示了。我可能需要更多的代码。 Woocommerce 页面看起来很复杂,但我想我可能需要去那个页面。对我可能尝试的整个代码 sn-p 的任何帮助将不胜感激。谢谢你。 add_action('wp_footer', 'signup_bar'); /* add_filter( 'the_content', 'signup_bar' );*/ 它现在在所有页面上都可以正常工作,但在页脚之后,所以现在我只需要弄清楚如何让它成为页脚的第一个。 尝试更改添加操作的优先级。还可以使用开发工具检查源代码。或者打开footer.php并检查模板文件中是否存在一个actino钩子,你可以使用它而不是wp_footer Anagio,任何关于最终解决方案的帮助都会非常受欢迎。我在这里重新发布了这个新的但相关的问题,该问题是 usinjg wp-footer 与 footer.php 文件一起引起的。我:***.com/questions/32160743/…'

以上是关于WordPress 插件与 WooCommerce 产品页面冲突的主要内容,如果未能解决你的问题,请参考以下文章

带有 WooCommerce 插件的 WordPress 数据库未显示所有数据

亚马逊物流与 Woocommerce 同步

极慢的 Wordpress WooCommerce 网站(在管理面板和最终用户中)

无法在 LOCALHOST 上安装 woocommerce 插件

wordpress 怎么建设商城网站

Wordpress:仅适用于 Woocommerce 品牌页面的摘录