WordPress

WordPress开发人员和管理员的问答

2
esc_html,esc_attr,esc_html_e等之间有什么区别?
我收到了安全人员的反馈,他指出我应该在代码中使用适当的用户输入转义功能。所以我做了一些研究,发现了转义功能。 它们之间有什么区别?什么时候应该使用esc_html()以及何时esc_attr()?最后我应该何时使用这些功能_e()?

2
如何在wp_register_style中添加交叉来源和完整性?(字体真棒5)
我正在将Font Awesome 4升级到版本5,该版本将完整性和跨域属性引入了<link rel="stylesheet">标记。 目前,我正在使用: wp_register_style('FontAwesome', 'https://example.com/font-awesome.min.css', array(), null, 'all' ); wp_enqueue_style('FontAwesome'); 输出为: <link rel="stylesheet" id="FontAwesome-css" href="https://example.com/font-awesome.min.css" type="text/css" media="all" /> 有了Font Awesome 5,它引入了两个新的属性和值(integrity和crossorigin),例如: <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> 所以,我需要找到我怎么能既完整性和crossorigin添加到wp_register_style,我都试过,但我会尝试使用wp_style_add_data都失败了,它似乎是这种方法仅支持conditional,rtl并且suffix,alt和title。

7
本地主机(MAMP)中的WP CLI“建立数据库连接时出错”
当我尝试使用WP CLI创建内容时出现此错误: Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or we can’t contact the database server at `localhost`. This could mean your host’s database server is down. 但是我可以使用以下链接打开网站:http:// localhost:8888 / projectname 任何的想法?
13 wp-cli 

2
如何在管理面板中的woocommerce订单中显示自定义字段?
目前,我在woocommerce中通过以下方式添加了自定义结算字段: function custom_override_checkout_fields( $fields ) { $fields['billing']['billing_phone_new'] = array( 'label' => __('Phone 2', 'woocommerce'), 'placeholder' => _x('Phone 2', 'placeholder', 'woocommerce'), 'required' => false, 'class' => array('form-row-wide'), 'clear' => true ); return $fields; } add_filter('woocommerce_checkout_fields','custom_override_checkout_fields'); 我需要在管理员端编辑此字段值。目前,我可以在帐单邮寄地址中编辑所有其他值,但此值未出现在“管理”部分中。我仅将以下代码用于查看admin部分中的值。 function order_phone_backend($order){ echo "<p><strong>Billing phone 2:</strong> " . get_post_meta( $order->id, '_billing_phone_new', true ) . "</p><br>"; …

6
删除插件时从数据库中删除表
我创建了一个插件,并想添加一个函数,以在用户删除我的插件时从数据库中删除我的表。我创建了一个函数,当用户停用我的插件时,该函数将从数据库中删除表,但我不希望这样做。这是代码: // Delete table when deactivate function my_plugin_remove_database() { global $wpdb; $table_name = "NestoNovo"; $sql = "DROP TABLE IF EXISTS $table_name;"; $wpdb->query($sql); delete_option("my_plugin_db_version"); } register_deactivation_hook( __FILE__, 'my_plugin_remove_database' ); 如您所见,该功能在停用插件时会删除表,但是在删除插件时我需要这样做。

3
如何在插件中使用get_template_part()包含文件?
一个非常简单的问题可能是,但是我很挣扎。在主题开发中,我工作了get_template_part()很多次,并且了解了它的基础知识。但是当我开发一个插件时,我想知道如何使用它显示一些错误: 注意:使用未定义的常量STYLESHEETPATH-...\wp-includes\template.php在第407行假定为'STYLESHEETPATH' 和 注意:使用未定义的常量TEMPLATEPATH-...\wp-includes\template.php在第410行假定为“ TEMPLATEPATH” 谷歌搜索问题显示了支持修复程序: 用于get_template_part()插件-WordPress支持 但这似乎是一个巨大的解决方法-我对此表示怀疑。我认为应该没那么复杂。我检查了此WPSE答案并找到以下代码行: if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) ) include( 'loop-mycustomposttype.php' ); 哪里有PHP include()函数。根据我的WordPress知识,我学会了优先get_template_part()于PHP include()。那我该如何get_template_part()在插件中使用简单的插件呢? 我没有使用任何循环或其他东西,我只是将我的插件代码分离(或可以说是将其组织)到不同的文件中,以便在某些情况下,我会简单地将其注释掉,以删除不必要的地方。我试过了: get_template_part( 'my', 'special-admin' ); 然后在错误之后,将其更改为: get_template_part( 'my', 'specialadmin' ); 但您知道那不是问题。我在本地服务器上,使用WAMP。

1
ACF是陷阱吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我是企业全栈开发人员,并且开始使用ACF。 最初,我认为ACF是网站的一站式解决方案,但是在对分类法进行了更多研究之后,我担心使用它会导致数据库效率很低。 例如:如果我有一个雇员自定义职位类型,而这个实体有一个性别,那么根据我的研究,一个带有元框的分类法来选择一个值是更好的选择。 事实是,ACF仅将您带到自定义字段实现。 我应该使用其他支持分类法的插件吗?我应该使用互补插件进行分类吗?我什至要为此担心(将性别作为自定义字段实施是否会带来灾难?)

3
如何获得所有排队的脚本和样式的列表?
我正在创建一个插件,我想获取其他插件使用的所有脚本和CSS的列表。 这是我的功能: function crunchify_print_scripts_styles() { $result = []; $result['scripts'] = []; $result['styles'] = []; // Print all loaded Scripts global $wp_scripts; foreach( $wp_scripts->queue as $script ) : $result['scripts'][] = $wp_scripts->registered[$script]->src . ";"; endforeach; // Print all loaded Styles (CSS) global $wp_styles; foreach( $wp_styles->queue as $style ) : $result['styles'][] = $wp_styles->registered[$style]->src …

1
自定义帖子类型设置页面,选择页面以显示存档
因此,我遵循了该帖子的公认答案。可以为“自定义帖子类型”的“首页显示”设置添加其他设置 但并非完全有效,因此必须与本文中已接受的答案进行比较。 无法输出do_settings_sections。不明白为什么 现在,它实际上使用以下代码工作 //Add settings to menu add_action( 'admin_menu', 'events_options_add_page' ); function events_options_add_page() { // add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page'); add_submenu_page('edit.php?post_type=events', 'Events Admin', 'Events Settings', 'edit_posts', basename(__FILE__), 'events_options_do_page'); } ///wordpress/32689/possible-to-add-another-setting-to-front-page-displays-setting-for-custom-post //Fix Cap to allow editors to edit theme options function events_get_options_page_cap() { return 'edit_posts'; } add_filter('option_page_capability_events-options', …

2
如何配置Docker以开发和部署自定义主题?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我开始使用Docker,但是对WordPress专业开发实践还是不熟悉。我想在我的Mac上设置一个Docker开发环境,以便可以进行自定义WordPress主题开发。 假设您之前已经做过并且已经在使用Docker,那么如何设置呢?您的Dockerfile和docker-compose.yml是什么样的?我敢肯定这已经做过。如果已经有单行命令可以为您进行设置,我不会感到惊讶。 更新:我已将本主题缩小为以下问题: 如何配置Docker以开发和部署自定义主题?

3
在子主题上覆盖父主题翻译
我有一个父主题,可以正确使用load_theme_textdomain()多种语言来加载所有已翻译的字符串。 然后,我创建了一个子主题,load_child_theme_textdomain()用于为其字符串实现相同的功能。 在父主题上有某些特定语言的翻译字符串,我想替换/覆盖子主题。 我知道它们是否在模板文件中,我可以替换该文件,只需更改这些字符串的文本域,但是不幸的是,我所谈论的字符串在很多地方以及仪表板中都使用过(因此在某些过滤器/动作函数中) )。 所以我的问题是:是否有一种方法可以替换子主题中的那些翻译后的字符串而不必替换父模板文件或函数? 我不知道,也许在子主题的languages文件夹内添加一个parent-theme.mo文件,只翻译了那些字符串,或者类似的东西。

1
当插件在多站点上被网络激活时,如何运行激活功能?
我正在尝试使我的插件与多站点兼容。我正在使用该register_activation_hook()函数来注册my_activate()要在激活插件时运行的函数。这在单站点安装中效果很好。 function my_activate() { // Do some things. } register_activation_hook( __FILE__, 'my_activate' ); 问题是,my_activate()当我的插件被“网络激活”时,不是每个站点都运行。另外,在网络上创建新站点时,它不会运行。 如何使我的激活例程正常运行:a)为网络中的所有站点都对我的插件进行网络激活时运行,以及b)在多站点网络上创建新站点时运行?

1
在WordPress 4.1多站点安装中映射多个域的正确方法是什么?
我知道这个问题以及其他问题,但是对于如何使用多站点设置域以使www和非www变体正常运行,没有找到明确的答案。我相信我已经在DNS级别正确设置了通配符,并且建议的解决方案define( 'NOBLOGREDIRECT', 'http://www.example.com' );可以为我的主站点添加作品,但不能在同一安装中添加其他网络。 我使用基于一些研究的“ WP Multi Network”插件,得出的结论是,如果我在一个WordPress安装上运行多个域,则我应该使用多个网络,而不仅仅是多站点。“我的网络”和“网站”全部添加www到“域”字段中 那么,将裸域映射www到多站点安装的正确方法是什么?需要插件吗?是否应该使用重写在Web服务器配置中处理所有这些问题?
12 multisite 

2
如何在媒体模式中触发刷新
我正在开发一个向媒体模式添加新标签的插件,并且我需要知道一种触发附件标签刷新的方式,以便它显示新添加的附件。这是我正在使用的代码: wp.media.view.Toolbar.Custom = wp.media.view.Toolbar.extend({ initialize: function() { _.defaults( this.options, { event: 'custom_event', close: false, items: { custom_event: { text: wp.media.view.l10n.customButton, style: 'primary', priority: 80, requires: false, click: this.addAttachment } } }); wp.media.view.Toolbar.prototype.initialize.apply( this, arguments ); }, // triggered when the button is clicked addAttachment: function(){ this.controller.state().addAttachment(); this.controller.setState( 'insert' ); // …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.