WordPress

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


2
如何获得隐私政策页面?
在更新GDPR之后,WordPress现在在设置下有一个名为“隐私策略”的选项,您可以使用该页面作为您的隐私策略页面。 如何获得此页面的ID或永久链接以在主题或插件中使用?

2
如何检测古腾堡的用法
名为Gutenberg的新编辑器在4.9中作为插件,在5.0中作为名为Block Editor的核心功能。关于此,通常需要以编程方式确定在站点控制台中使用哪个编辑器来编辑帖子或页面。怎么做? 更新:对于类似问题,有许多过时的答案: gutenberg_post_has_blocks() -此功能仅存在于Gutenberg插件中,而不存在于5.0 Core中 is_gutenberg_page() - 相同 the_gutenberg_project() - 相同 has_blocks() -经典编辑器处于打开状态且其选项“所有用户的默认编辑器” =“阻止编辑器”时不起作用(返回false) 答案只是产生致命错误Call to undefined function get_current_screen() 因此,在评论这个问题和答案之前,请先完成一项工作,以检查您的建议。立即检查,使用4.9和当前版本的WordPress,以及Classic Editor和Gutenberg / Block Editor的所有可能组合。我将很乐意讨论经过测试的解决方案,而不是讨论某些内容的链接。

4
如果the_content不是,为什么还要逃脱?
内置函数the_content通过多个过滤器运行,但不会转义输出。这样做很难,因为必须允许HTML甚至某些脚本通过。 输出时,the_content似乎通过以下过滤器运行(从5.0开始): add_filter( 'the_content', 'do_blocks', 9 ); add_filter( 'the_content', 'wptexturize' ); add_filter( 'the_content', 'convert_smilies', 20 ); add_filter( 'the_content', 'wpautop' ); add_filter( 'the_content', 'shortcode_unautop' ); add_filter( 'the_content', 'prepend_attachment' ); add_filter( 'the_content', 'wp_make_content_images_responsive' ); (and) add_filter( 'the_content', 'capital_P_dangit' ); add_filter( 'the_content', 'do_shortcode' ); 它还做一个简单的字符串替换: $content = str_replace( ']]>', ']]>', $content ); 然后,get_the_content进行与“更多”链接有关的少量处理,以及与外语有关的错误。 …
8 security 

1
添加到古腾堡侧边栏
我试图弄清楚如何在Gutenberg界面的右侧添加自定义页面选项。我认为不需要内容块,我只需要能够添加特定于页面的配置,但似乎无法使其正常工作。 在古腾堡之前,我会通过在右侧放置一个metabox来解决此问题,但是从我阅读的内容来看,听起来像metaboxes前进将是一种不好的做法。

1
请解释这些钩子如何工作
我已经阅读了有关钩子和动作的信息,并且我知道当我们看到do_action('some_hook')它意味着主题的某个位置add_action('some_hook', function() {...});或功能some_hook()存在functions.php。 但是,这是什么?: 从woocommerce / includes / class-wc-checkout.php第943行: public function process_checkout() { try { ///////////// do_action( 'woocommerce_before_checkout_process' ); <----!!! if ( WC()->cart->is_empty() ) { throw new Exception( sprintf( __( 'Sorry, your session has expired. <a href="%s" class="wc-backward">Return to shop</a>', 'woocommerce' ), esc_url( wc_get_page_permalink( 'shop' ) ) ) ); } …
8 hooks  actions 

1
在首页上显示随机类别(查找和编辑主题功能)
我目前正处于为Wordpress主题编辑子主题的Alpha阶段。我确实有编程经验,并且有一些管理wordpress的经验,但是没有直接的经验来编辑wordpress相关代码。现在,它当前按字母顺序显示前三个类别。 我正在尝试做的是:我不想显示按字母顺序显示的前三个类别,而是要显示3个随机类别,其产品数量超过x。 我遇到了以下路障/问题,阻止我继续前进。 哪种机制/功能控制着这些类别的选择?(他们的代码) 是基于主题的还是底层WordPress系统中的某些内容? 哪些其他信息与进行此更改有关? Firefox Dev Bar会提供哪些有用的信息? 如何找到“ TheirCode”,以便将其替换为“ MyCode”? 真正的问题是:如何使用诸如firefox Dev Bar和实际来源之类的工具找到负责该选择的“ TheirCode”? 这个问题与WooCommerce(插件)无关。我正在寻找一种在WooCommerce(该公司)设计的主题中或实际上在任何主题中找到功能的方法。 开源主题:WooCommerce店面

2
get_option()是否比访问get_transient()更快?
今天,我对数据库进行了测试,以探讨从选项,自定义表和瞬态访问键之间的速度差异。我运行了1000次测试,以下是运行1000次get操作所花费的时间: get_transient() 0.0245秒 get_option() 0.0068秒 自定义表中的简单选择操作0.65秒 我还检查了此测试过程中瞬态未过期。所以问题是,get_option()比get_transient()我测试中的速度快还是弄乱了?自定义表格是否由于WordPress默认缓存的选项而延迟?另外,选项是否也由瞬态等不同的缓存插件缓存?

1
定制程序中的窗口小部件是否可以“一次性使用”(即在添加1个实例后被禁用)?
我每天晚上都在寻求构建自定义的一次性小部件。 一旦将其一个实例添加到“定制程序”的侧边栏面板中,其在“可用小部件”面板上的控件应显示为禁用(或完全消失)。 这是它的外观(请注意右侧视觉上“已禁用”的小部件): 自定义窗口小部件已注册并且全部注册,但我只能使用一次。 眼镜 规模不是问题。可以假设只有1个注册的侧边栏。该方法可以是将小部件的使用限制为每个侧边栏1个或所有注册的侧边栏1个-两者现在都一样好。 后端上的“窗口小部件”页面不是问题。不需要在后端“ 外观 ” 下的“ 小部件”页面上同样良好地工作。它只需要在定制程序中工作。 问题 大约250年前,所有小部件都曾经是“单次使用”的。有谁知道将这些时间带回去并使自定义窗口小部件通过窗口小部件API只能使用1次的合法方法吗? 如果不是这样(我在挖掘了相当数量的核心文件后就假定),我可能会采用基于CSS的方法(指针事件,伪元素覆盖等)。任何一种灵魂都可以通过一种基本方法来帮助我非常有限的Customizer / JavaScript知识,该基本方法是,一旦所述小部件的实例具有被添加/删除到侧边栏面板? 到目前为止我尝试过的 挖掘大量核心文件。 阅读this和this,但是似乎都不可行。 修补了jQuery事件widget-added,widget-updated和widget-synced,但错过了“小部件已删除”事件。 提前感谢吨! 更新:当然,还没有将我的概念证明放在公共回购中。 解 我将下面由kraftner共享的解决方案包装在GitHub上的概念证明插件中。

3
如何控制插件添加的项目在管理菜单中的位置?
在阅读了两个WP插件堆栈中的其他文章之后,它们强制设置了相同的菜单位置(可能出现一个菜单然后不再出现),我想知道如何控制插件添加的菜单项的位置。 我已经使用了一个似乎可以处理“设置”中此类子菜单项的函数,以及一个用于对默认项(帖子,页面,主题,插件,设置等)进行重新排序的另一个函数,但该函数不会改变位置插件添加的此类项目。 function custom_menu_order() { return array( //Add items here in desired order. ); } add_filter( 'custom_menu_order', '__return_true' ); add_filter( 'menu_order', 'custom_menu_order' ); 例如,在WooCommerce添加的两个顶级菜单项中,一个出现在ContactForm7添加的项的上方,另一个出现在下方,因此最好对它们进行重新排序-以便更好地对项目进行重新排序不会强制菜单位置,而是显示在底部。 我发现通常可以对默认项和'edit.php?post_type = ...'项目进行重新排序,但是对于那些具有'admin.php?page = ...'的项目则无需重新排序。 禁用我的重新排序功能后,两个WooCommerce项目(“ edit.php?post_type = product”和“ edit.php?post_type = shop_order”)会按预期分组在一起,但是当重新激活该功能时,它们将被拆分通过ContactForm7('admin.php?page = wpcf7')。 而且,一个('edit.php?post_type = shop_order')WooCommerce CPT不会重新排序-尽管另一个('edit.php?post_type = product')可以重新排序。
8 wp-admin 

1
是否可以重组WordPress上传目录?
我有一个WordPress网站,所有上传都已上传到/wp-content/uploads/*。现在有成千上万的图像,这对性能造成了很大的影响,我已被指派帮助解决它。 有人之前对上传目录进行过重新排序吗?将其移动到结构更清晰的YYYY / MM中?我很想听听一些有关如何实现这一目标的策略。

3
入队jquery-ui的正确方法
我在插件中包含jquery-ui脚本和样式时遇到了困难。看来我的wp_enqueue_script电话完全被忽略了。 已经有很多与此问题类似的问题,但是到目前为止,我发现的所有答案都归结为wp_enqueue_script在wp_enqueue_scripts动作挂钩中调用,而这已经在做了。 在类的构造函数中,我调用: add_action( 'wp_enqueue_scripts', array($this, 'enqueue_scripts') ); 然后,在下面: public function enqueue_scripts() { wp_enqueue_script( 'jquery-ui-core', false, array('jquery') ); wp_enqueue_script( 'jquery-ui-widget', false, array('jquery') ); wp_enqueue_script( 'jquery-ui-mouse', false, array('jquery') ); wp_enqueue_script( 'jquery-ui-accordion', false, array('jquery') ); wp_enqueue_script( 'jquery-ui-autocomplete', false, array('jquery')); wp_enqueue_script( 'jquery-ui-slider', false, array('jquery')); 我检查了代码是否实际上在每次页面加载时都会执行。但是,页面缺少<link>jquery-ui库的标签。我已经尝试过jquery在wp_enqueue_script调用的第三个参数中显式指定的依赖性和不依赖性。 我还尝试了简单的WP 4.8安装,除了我的以外没有安装任何插件,并且仅使用默认的27个主题。没有骰子。 我的代码有什么问题?
8 jquery-ui 

1
esc_html过滤器和attribute_escape过滤器有什么区别?
esc_html和attribute_escape过滤器的确切区别是什么? esc_html()使用esc_html filter和esc_attr()使用attribute_escape filter。两者都编码<>&“'(小于,大于,与号,双引号,单引号)。 我很想知道是什么使它们在安全性(转义)方面与众不同。

2
WP REST API需要GET端点密码
我有一个自定义帖子类型,card该类型通过WP REST API公开。有没有办法要求使用Cookie或Basic Auth标头进行身份验证?我在POST方法块下看到一个用于密码的参数,但是我不确定如何使用它。
8 rest-api 

4
清理来自wp_editor的内容
我建立了一个自定义帖子类型,在其中可以找到由生成的标准textarea / tinymce,wp_editor()而我在保存部分时遇到了问题。 如果我使用以下代码保存内容: update_post_meta( $post_id, $prefix.'content', $_POST['content'] ); 一切工作正常,但没有安全性(消毒,验证等...) 如果我使用以下代码保存内容: update_post_meta( $post_id, $prefix.'content', sanitize_text_field($_POST['content']) ); 我解决了安全问题,但内容中丢失了所有样式,媒体等。 用所有应用的样式(插入的媒体但包括消毒剂)保存内容的好方法是什么? 我读了一些有关,wp_kses()但是我不知道如何应用好的过滤器。(允许使用通用标签,我应该阻止哪一个?等。)

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.