在看了插件之后,我可以看到两个选项,虽然可能还有其他方法来解决这个问题,但我的时间有限,因此我将为您提供一些关于您现在可以做什么的见解。
首先,插件作者为您提供了一些额外的过滤器:
时事通讯\\u profile\\u extra(请参阅时事通讯/订阅/订阅.php)
您可以使用这些过滤器向相应的订阅和配置文件页面添加其他控件。
但是,请注意,乍一看,似乎没有任何过滤器来扩充现有字段,如性别/性别字段。
但是你可以使用这些过滤器添加一个额外的字段,比如一个复选框,询问用户他们是否是夫妻,如果他们标记了这个复选框,你可以使用第三个过滤器newsletter_profile_save
在将值插入数据库之前对其进行筛选。
此时,您将确定如果标记了复选框,那么您将用“couple”或“c”或任何您希望存储以供以后检索的数据库值替换sex post值:
//pseudo-code example
if ( isset($_POST[\'are_you_a_couple\']) && $_POST[\'are_you_a_couple\'] === 1 ) {
$_POST[\'sex\'] = \'couple\';
}
上面描述的过程只是一个高层次的概述,比我下一个建议的解决方案要复杂得多,该解决方案是将您自己的自定义JavaScript文件排队到表单控件显示的相应页面上,并向性别/性别下拉字段添加附加选项。
例如,将以下代码添加到主题函数中。php文件:
/**
* Proper way to enqueue scripts and styles
*/
function custom_newsletter_scripts() {
wp_enqueue_script( \'script-name\', get_template_directory_uri() . \'/js/custom-control.js\', array(), \'1.0.0\', true );
}
add_action( \'wp_enqueue_scripts\', \'custom_newsletter_scripts\' );
然后创建自定义控件。js文件放在您的主题下
/js/
目录或您希望存储脚本的任何位置,只需确保您的路径在调用
wp_enqueue_script
在上面
在JavaScript文件中,可以执行以下操作:
;(function($){
$(document).ready(function(){
$(\'#gender_select_menu\')
.append($("<option></option>")
.attr("value",\'c\')
.text(\'Couple\'));
});
})(jQuery);
代码示例很粗糙,请根据您的喜好执行JavaScript,如果DOMReady上不存在控件,您可能希望添加超时或修改上的DOM
$(window).load(function(){});
这应该足以让您朝着正确的方向前进,并保证您的更改不会因插件更新而进一步丢失。