WordPress

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

3
引用插件目录的最佳实践
我的插件使用以下代码引用文件,但WP_PLUGIN_DIR如果用户重命名默认插件文件夹,则无法读取。我还想替换/location-specific-menu-items/为对当前插件文件夹的引用。 $gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD); 无论WP插件目录和特定插件文件夹的名称如何,我如何都可以重写它以使其工作? 编辑: 这是每个人的输入后我最终的工作解决方案。非常感谢! $GeoIPv4_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv4.dat'; $GeoIPv6_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv6.dat'; if (!filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE) { if ( is_readable ( $GeoIPv4_file ) ) { $gi = geoip_open( $GeoIPv4_file, GEOIP_STANDARD ); $user_country = geoip_country_code_by_addr($gi, $ip_address); geoip_close($gi); } …

1
Customizer中的“自定义图像”部分
因此,我在定制器中有此定制部分,用于控制主页上的功能产品。所有这些都已注册,依此类推,但我遇到的问题是客户端上载我不知道如何进行更新的功能图片之一。 我正在使用的functions.php代码: // Customiser function themeName_customize_register( $wp_customize ) { $wp_customize->add_setting('feature_product_one', array( 'default-image' => get_template_directory_uri() . '/assest/imgs/featureProducts/product1.png', 'transport' => 'refresh', 'height' => 180, 'width' => 160, )); $wp_customize->add_setting('feature_product_two', array( 'default-image' => get_template_directory_uri() . '/assest/imgs/featureProducts/product1.png', 'transport' => 'refresh', 'height' => 180, 'width' => 160, )); $wp_customize->add_setting('feature_product_three', array( 'default-image' => get_template_directory_uri() . '/assest/imgs/featureProducts/product1.png', …


5
如何通过部分元键查询帖子?
我有一个功能,可以将帖子的“喜欢”状态存储为帖子元。我想将“喜欢”与喜欢它的用户相关联,所以我设置了一个自定义字段“ like_status_ {user_id}”(其中{user_id}是当前登录用户的ID),我将其存储为0或1.因此,对于具有多个“点赞”的帖子,db中将有几个元数据设置如下: 'meta_key' = 'like_status_0' 'meta_value' = 1 'meta_key' = 'like_status_2' 'meta_value' = 1 'meta_key' = 'like_status_34' 'meta_value' = 1 ....等等。 特定帖子可能有数千个赞。我如何运行查询,以显示其他人是否也喜欢该帖子? 我在想这样的事情: $query = new WP_Query(array( 'meta_key' => 'like_status_{user_id}', 'meta_value' => 1, )); 我正在尝试向所有喜欢该帖子的人发送通知,当其他人喜欢该帖子时……例如,“嘿,其他人喜欢您喜欢的帖子。您应该去看看!” 但是我需要一种方法来找出是否有人喜欢该帖子,如果喜欢,他们会是谁,以便我通知他们。 如果不可能,您能否建议一种更好的方式将数据存储为post_meta,同时又保持快速更新帖子上单个用户的喜欢状态的效率?

2
多站点网络端口号有问题吗?
我正在按照本教程创建WordPress网站网络。添加后 /* Multisite */ define( 'WP_ALLOW_MULTISITE', true ); 到我的wp-config.php文件,当我开始配置多站点网络时出现此错误 ERROR: You cannot install a network of sites with your server address. You cannot use port numbers such as :8080 我尝试改变 Listen 0.0.0.0:8080 Listen [::0]:8080 至 Listen 0.0.0.0:80 Listen [::0]:80 来自httpd.confApache,但由于此服务器无法正常运行。我是WordPress的新手,将不胜感激。

1
TinyMCE编辑器破坏了我漂亮的HTML
这几乎与以下内容完全相同:如何使Wordpress和TinyMCE接受<a>标签,这些标签包装HTML5中允许的块级元素?和HTML5,WordPress和Tiny MCE问题-在div周围包裹锚定标记会导致输出时髦 我的问题是建议的解决方案(tiny_mce_before_init过滤器)似乎无法解决我的问题。我有看起来像这样的HTML: <a href="#"> <img src="path/to/file.jpg" /> <p>Some amazing descriptive text</p> </a> 在HTML5中是完全合法的。但是,WP编辑器不喜欢它,并将其转换为: <a href="#"> <img src="path/to/file.jpg" /> </a> <p>Some amazing descriptive text</p> 当然,这破坏了我的布局。有谁知道我可以防止这种行为的方法?我不能放弃编辑器的Visual组件并坚持纯文本。欢迎任何建议。 清楚一点,当我使用下面的代码(在此处建议)时,<p>标记允许保留在锚点内,但是会添加大量额外的空间以及一个 实体,该实体每次在可视和文本模式之间切换时都会成倍增加。 add_filter('tiny_mce_before_init', 'modify_valid_children'); function modify_valid_children($settings){ $settings['valid_children']="+a[div|p|ul|ol|li|h1|h2|h3|h4|h5|h5|h6]"; return $settings; }

2
WP 4.4。响应式图像浏览器选择“错误”的
我很高兴WP 4.4。带有内置的响应式图像功能。但是我对此并不满意。 我在我的相机中设置了一些自定义图像尺寸functions.php: add_image_size('缩略图',600,600,true); add_image_size('news-large',1024,false); add_image_size('news-small',500,false); add_image_size('3-col',500,375,true); add_image_size('presscutting',600,850,true); add_image_size('medium-large',768,false); //今天刚刚添加,用于设备支持 add_image_size('full-feature-image',2000,false); add_image_size('gallery-image',800,600,true); 如我所知,未裁剪的图像(将裁剪设置为false)被添加到srcset。图像在前端输出,例如(添加了换行符以提高可读性): <img width =“ 2000” height =“ 1335” src =“ http://mywebsite.com/cms/wp-content/uploads/2015/03/image-2000x1335.jpg” class =“ attachment-full-feature-image size-full-feature-image” alt =“ asdf” srcset =“ http://mywebsite.com/cms/wp-content/uploads/2015/03/image-300x200.jpg 300w, http://mywebsite.com/cms/wp-content/uploads/2015/03/image-768x513.jpg 768w, http://mywebsite.com/cms/wp-content/uploads/2015/03/image-1024x683.jpg 1024w, http://mywebsite.com/cms/wp-content/uploads/2015/03/image-500x334.jpg 500w“ Size =“(最大宽度:2000px)100vw,2000px”> 但是现在我的问题是:尽管屏幕分辨率为1600px,但在屏幕上仅显示指定宽度为1024px的图像。因此,所有图像看起来都很模糊。 如何使WP和/或浏览器使用2kpx图像代替? 我是否需要为1280px,1440px,1600px,1968px添加新的图像尺寸?还是有一种更简单的方法来告诉WP /浏览器使用较大的图像,而不是显示模糊且太小的版本?

1
升级到4.4后自定义分类查询中断
我刚刚从4.2升级到4.4,现在我的分类查询返回空。在升级之前,它一直运行良好。 我已经注册了一个名为的自定义分类法'title',供我的自定义帖子类型使用'sg-publications'。按照WP模板层次结构,我创建了一个名为的模板taxonomy-title.php,该模板使用默认的查询args,到目前为止,已按标题正确显示了每个出版物。 这是该模板中$ queried_object和$ wp_query-> request的输出: [queried_object] => WP_Term Object ( [term_id] => 1256 [name] => Stroupe Scoop [slug] => stroupe-scoop [term_group] => 0 [term_taxonomy_id] => 1374 [taxonomy] => title [description] => [parent] => 0 [count] => 30 [filter] => raw ) [queried_object_id] => 1256 [request] => SELECT wp_posts.* FROM …

1
为什么WordPress含盐不止一种?
我想我在这里暴露了一些缺乏安全知识,但是吃一盐不是足够吗?为什么需要四种不同的盐? define('AUTH_SALT', 'z(ly|p-aeKf^I~OfOUUIL&Y?C5Z.iu|L}kY%dvclq.h9n`)MlZe6'); define('SECURE_AUTH_SALT', 'NIY8g>=l9y~eV~WLu 3n>UG#3wSl4YfT%;z9`7m9Gk/k_Vn4`ej8'); define('LOGGED_IN_SALT', '<-[R@, I;m%n*9G?CU1a:))pEAa/r5X5@pT`cO2H|c2&x~G<p*3T:-5v<N'); define('NONCE_SALT', 'm(-0:+r0a%z~a:2F;]-geM$9~!4j(q3QdpkmB7;P+ZYYw7Rdy{97fS'); (不用担心,价值观被破坏了,它是一个本地站点。)
9 security 

2
通过多个元键查询WP REST API v2
使用REST API的v2,我想通过多个元键查询一些帖子。使用v1,我能够像这样设置url的格式,&filter[meta_value][month]=12&[meta_value][year]=2015并且可以正常工作(在将元值公开给API之后)。 现在使用v2,我只能通过使用此GitHub线程上列出的方法来使它起作用:https : //github.com/WP-API/WP-API/issues/1599#issuecomment-161166805 基本上,使用以下rest_query_vars过滤器添加了meta字段: add_filter( 'rest_query_vars', 'flux_allow_meta_query' ); function flux_allow_meta_query( $valid_vars ) { $valid_vars = array_merge( $valid_vars, array( 'meta_key', 'meta_value', 'meta_compare' ) ); return $valid_vars; } 这样,我就可以使用url这样的网址来过滤一个元键wp-json/wp/v2/posts?filter[meta_key]=test&filter[meta_value]=on。 但是,听起来对多个元键进行过滤的唯一方法是编写自定义过滤器。有人可以指出我这样做的正确方向吗?

2
在mu-plugins插件中为flush_rewrite_rules自定义帖子类型的最佳方法?
我正在编写一个实例化自定义帖子类型的插件(除其他外)。它是一个多站点插件,位于目录mu-plugins中。 在这种情况下处理flush_rewrite_rules()的最佳实践是什么?对于“普通”插件,您可以在激活钩子中进行此操作-对于必需使用的插件将无法实现,因为这些钩子不可用。 由于这应该是在注册自定义帖子类型之后的“一次性”事件,因此在我注册CPT的类中做这样的事情是否有意义: private function check_flush_my_CPT() { global $wp_rewrite; if ( !get_option('my_plugin_firstrun') ) { $wp_rewrite->init(); $wp_rewrite->flush_rules(true); update_option('my_plugin_firstrun', 'yes'); } } public function register_my_CPT() { // do all the CPT setup steps for the $args array... register_post_type('my_CPT', $args); $this->check_flush_my_CPT(); } add_action( 'init', array(&$this, 'register_my_CPT' ) ); 因此,CPT注册发生在每个“ init”操作上-但如果我有此权利,则重写规则刷新仅发生一次。 曾经。 我在正确的轨道上吗? (编辑):我刚刚尝试过;我的CPT显示404错误,因此重写规则不起作用:-( …

2
为什么要使用admin-ajax.php,它如何工作?
我对json数据的ajax调用可以正常运行,就像下面的functions.php一样: add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' ); add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' ); function prefix_load_cat_posts () { //get data here } javascript: var ajaxurl = 'http://'+window.location.host+'/wp-admin/admin-ajax.php'; jQuery.ajax({ type: 'POST', url: ajaxurl, etc. 我有两个问题。 1)为什么使用admin-ajax.php而不是将json编码在一个单独的文件中,themes/example/json.php然后在其中编码数据? 2)admin-ajax.php如何工作?我对那个文件不太了解。它会加载所有功能,以便您准备使用它们吗? 谢谢!
9 ajax 

3
如何替换在functions.php中的插件类内部声明的函数?
我想修改插件中的功能。像这样在插件的主文件中声明: class WCPGSK_Main { ... public function wcpgsk_email_after_order_table($order) { ... } } 像这样从那里添加呼叫: add_action( 'woocommerce_email_after_order_table', array($this, 'wcpgsk_email_after_order_table') ); 我想如果可以访问functions.php中的类,就可以替换它。然后,我将可以编写如下内容: $wcpgsk = new WCPGSK_Main; remove_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'wcpgsk_email_after_order_table') ); function customized_wcpgsk_email_after_order_table($order) { ... } add_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'customized_wcpgsk_email_after_order_table') ); 我想获得对functions.php文件中类的访问权限的想法是包括在functions.php中声明该类的文件: require_once('/wp-content/plugins/woocommerce-poor-guys-swiss-knife/woocommerce-poor-guys-swiss-knife.php'); $wcpgsk = new WCPGSK_Main; ... 但这是行不通的,因为我猜想在WordPress中初始化插件时会包含该插件的文件。 有没有一种方法可以重写功能而不接触插件的文件?

2
如何判断插件是否兼容多站点?
作为WordPress管理员新手,我刚刚经历了我的第一个非自动WordPress升级。 我将五种不同的WordPress安装从4.1.3升级到了4.2。 它们都引用作为一个主域和四个附加域托管在同一Web主机上的不同网站。 在每个网站上,我使用以下插件: Akismet; Yoast的Google Analytics(分析); 谷歌的AdSense; Google XML Sitemaps和 WordPress.com的Jetpack。 为了简化进一步的管理,我考虑将所有五个安装合并到一个多站点安装中。 到目前为止,我发现很难找到有关每个插件与插件网站上的多站点安装的兼容性的明确答案。 插件页面是搜索此内容的正确位置吗? 是否可以在中央位置找到此信息?

6
如何通过自定义元字段过滤“管理用户”页面上的用户?
问题 WP似乎已在将其用于过滤用户列表之前删除了我的查询变量的值。 我的密码 此函数将自定义列添加到我的Users表上/wp-admin/users.php: function add_course_section_to_user_meta( $columns ) { $columns['course_section'] = 'Section'; return $columns; } add_filter( 'manage_users_columns', 'add_course_section_to_user_meta' ); 此函数告诉WP如何填充列中的值: function manage_users_course_section( $val, $col, $uid ) { if ( 'course_section' === $col ) return get_the_author_meta( 'course_section', $uid ); } add_filter( 'manage_users_custom_column', 'manage_users_course_section' ); 这将Filter在Users表上方添加一个下拉列表和按钮: function add_course_section_filter() { echo '<select name="course_section" …

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.