WordPress

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

1
是否可以过滤帖子中的评论,以便用户只能看到他们写的评论?
我对wordpress和编码还比较陌生,我正在一个网站上工作,在该网站上用户需要对某些帖子发表评论,但是我正在为其创建网站的人希望用户只能看到他们的评论。已为这些特定帖子撰写文章,没有其他用户的任何评论。 我已经搜索了一阵子了,但是找不到能够起作用的解决方案。有没有一种方法可以让我轻松实现呢?任何帮助将不胜感激。 谢谢!

4
在get_posts()中为meta_query参数设置别名
有没有办法在运行meta时在meta_query参数上设置别名get_posts()?我的查询之一表现不佳。为了进行优化,我只需要能够重用相同的联接表,而不是只需要一个表就联接3个表。 我目前的例子 $args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => array('puppy', 'kitten'), 'compare' => 'IN', ), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => 'puppy', 'compare' => '=', ), array( 'key' => 'abc_color', 'value' => 'pink', 'compare' …

3
如何批量删除所有没有帖子的用户?
我有1万个用户,其中约98%的用户从未发布过帖子(我的意思是帖子不发表评论)。 我需要一种方法来批量删除0条帖子的用户。 该方法必须计算所有包含自定义帖子类型的帖子,并且必须使用适当的WordPress功能删除用户,就像在仪表板上手动删除它们一样,而不仅仅是在mysql上删除表/行,因为这可能会导致意外结果。 有一个旧的插件可以做到这一点,但并未考虑所有帖子类型,因此无法真正使用。 任何帮助表示赞赏。
8 filters  users 

1
如何仅针对搜索查询修改posts_where过滤器
我正在使用posts_where过滤器来修改用户在网络上的搜索,但是我发现某些默认小部件(例如“最新帖子”)也使用了此过滤器,并且它们的行为也被修改了。我试图找到一种方法来避免除用户搜索之外的任何内容都使用posts_where过滤器。 这是我的代码: add_filter( 'posts_where' , 'posts_where_statement' ); function posts_where_statement( $where ) { global $wp_query; global $expp; global $wpdb; $local_db = $wpdb->prefix."posts"; $front_page_id = get_option('page_on_front'); if ( ('page' != get_option('show_on_front') || $front_page_id != $wp_query->query_vars['page_id']) && (!($wp_query->is_search)) ) return $where; //some $where modifications remove_all_actions ( '__after_loop'); return $where; } 还有其他功能或方法可以使此挂钩/过滤器仅适用于搜索查询吗?(从用户输入中获取结果的那个)

2
子主题是否需要文本域
对不起,菜鸟问题。 子主题是否需要文本域?我正在构建一个没有声明文本域的简单子主题。因此,当我使用要翻译的字符串时,应该使用父主题的文本域(是的,父主题已加载了文本域,并且还具有.mo / .po文件)。 例如,在我的子主题模板中添加此行 <?php __('Some String', 'parent-text-domain');> 上面的字符串会被翻译吗? 提前致谢

2
WP REST API重命名默认的wp-json uri部分是否相当容易?
WP REST API公开了很多信息,因此我过滤了不需要公开的端点。 我无法过滤所有内容:例如,所需媒体文件的位置已公开。 作为一项额外的保护,我想神秘化默认的uri。 我想改变,例如:http://example.com/wp-json/wp/v2/以 http://example.com/mistified/wp/v2/ 这很容易吗?
8 rest-api 

1
使用wp_generate_attachment_metadata将图像以编程方式添加到媒体库中的操作随机失败
我正在LAMP服务器(共享主机)上使用PHP 5.6.12运行最新的WordPress版本(4.6)。 我想编程方式添加10幅图像,使用FTP的上传wp-uploads目录,到媒体库使用三个WordPress的功能wp_insert_attachment,wp_generate_attachment_metadata和wp_update_attachment_metadata。 我的问题: 有时,我的PHP脚本有效(将所有10个图像正确添加到媒体库中)-有时却不起作用(在10个图像中,仅添加了4、5、6个左右)!每个图像的大小为2M-4M。 到目前为止,我所做的是: 我通过php.ini启用了error_logging,发现每隔一段时间wp_generate_attachment_metadata就会失败(例如,在处理第5,第6,第7图像时),并且整个PHP脚本终止。除此之外,我没有从error_log()获得更多信息。由于我怀疑内存问题,因此将php的内存大小增加到120M(我的托管提供程序给我128M),并将脚本执行增加到100s(我的托管提供程序给我120s)。所有文件都存在(当然),它们都是PNG-就像我说的那样,使用同一组10张图像进行测试,它有时有效,有时却无效... 我的问题: wp_generate_attachment_metadataWP 4.6 是否存在已知问题?在我将网站从WP 4.3升级到4.6之前,一切工作正常。 如果没有足够的内存导致此问题,我该如何优化我的PHP脚本以处理Web托管程序给定的128M内存限制? 如何确定内存不足是否导致我的PHP脚本终止? 提前致谢! 这是我的代码: $post_id = 1234; $images = array('filename1.png', 'filename2.png', ... 'filename10.png'); for($i = 0; $i < 10; $i++) { $attachment = array( 'post_mime_type' => 'image/png', 'post_title' => 'my description', 'post_content' => 'my description', 'post_status' => 'inherit' …

3
如何加载特定于页面的脚本/样式
我知道根据默认的Wordpress引导过程,首先functions.php调用,然后处理所有主题。但是我目前将完全重构主题以对其进行优化。我的想法是为通用属性,规范化颜色提供一个基本的CSS文件。或保留单个css文件,但在这种情况下,我需要对大小写进行硬编码functions.php才能确定页面。每个页面还有一个特定的页面,因为加载定义了所有样式的巨大CSS样式文件没有意义。 所以我的问题是,挂载特定脚本/样式的最佳选择是什么? 应该是header-xxx.php还是其他文件?也许有一种方法可以以更可扩展和更优雅的方式来实现这个想法? 我将不胜感激。

1
存档页面和单个帖子的自定义重写规则
我正在用几种自定义帖子类型构建一个Wordpress网站。每个职位类型都是不同的杂志。我也有杂志年份和期刊的自定义元字段。 我想拥有网址(使用archive.php): http://my_site/magazine/name/ http://my_site/magazine_name/year/ http://my_site/magazine_name/year/issue/ 我是通过代码实现的: function magazine_rewrite_tag() { add_rewrite_tag('%issue_year%', '([0-9]{4})'); add_rewrite_tag('%issue%', '([0-9])'); } add_action('init', 'magazine_rewrite_tag', 10, 0); 和: function magazine_rewrite_rules() { add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top'); add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top'); } add_action('init', 'magazine_rewrite_rules'); 当然,我在archive.php中也有一个自定义查询。而且效果很好。 但是现在,我的单篇文章网址不起作用。默认情况下,它是: http://my_site/magazine/post-title 但它显示了杂志中的所有文章,例如url(并且使用了archive.php模板): http://my_site/magazine/ 如何为单个自定义帖子添加正确的重写规则?我可能想以这种格式为单个帖子(仅针对选定的自定义帖子类型)提供网址: http://my_site/magazine/year/issue/post-title

1
WordPress中正确的单元测试
WordPress中有不同的线程可用于单元测试。就关心而言,对于在WordPress中完成的每项自定义操作,都应该进行适当的单元测试。 我已经检查了几个插件和关于它的文章。这是几个。 http://codex.wordpress.org/Theme_Unit_Test http://wptest.io/ https://make.wordpress.org/core/handbook/testing/automated-testing/phpunit/ 现在,使用PHP单元,我们可以根据需要编写测试用例。可以为核心功能和定制编写测试用例。 如何使用带有大量插件和自定义功能的主题进行自动单元测试,例如Mega Menu,Visual composer,Woo Commerce中的自定义。 如何做到这一点?使用高级主题和具有高定制水平的插件开发的站点的单元测试标准吗?

1
为什么自定义帖子类型的评论和引用仍然存在?
我们有一个我们不希望评论或引用的网站。 我们已完成以下操作以禁用引用: 在“设置”>“讨论”中,取消选中“允许来自其他博客的链接通知(引用和引用)”。 取消选中“允许人们对新文章发表评论”。 我们也回过头来禁用了以前发布的任何内容的评论和引用。 这对帖子和页面效果很好,但是对于自定义帖子类型,我们仍然会获得随机注释和引用。 现在,我知道可以删除对自定义帖子类型的帖子类型支持。但是,我们没有在自定义帖子类型定义中显式设置注释的“ support”参数,而在Codex中,默认设置显示,如果您未为“ support”设置值,则自定义帖子唯一类型支持是标题和描述字段。 有人可以帮助我理解为什么我们仍然收到引用和评论吗? 另外,我们如何阻止他们?

4
是否可以完全停止WP_Query检索帖子?
我正在尝试使用WP Redis缓存整个$ wp_query对象,其键为$ query_vars_hash。 这是如何$wp_query添加到$wp_object_cache: add_action('wp', function($wp) { if ( is_admin() ) return; global $wp_query; if ( !wp_cache_get($wp_query->query_vars_hash, 'globals') ) { wp_cache_add($wp_query->query_vars_hash, $wp_query, 'globals'); } }); 然后,我需要先检查查询是否已缓存,然后WP_Query才能检索帖子: add_action('pre_get_posts', function($query) { if ( is_admin() ) return; $cached_query = wp_cache_get($query->query_vars_hash, 'globals'); if ($cached_query) { $GLOBALS['wp_query'] = &$cached_query; return; // Return immediately to …
8 wp-query  hooks  cache 

3
删除首页查询
我有一个显示home.php模板的主页,其中包含2个带有小部件的侧边栏。 主要查询仍然会提取标准的10个帖子,但是由于我没有显示这些帖子,因此我希望完全消除对数据库的查询。如果需要的话,因为我没有在home.php模板中使用主循环,所以将执行一个空的post循环。 我该怎么做?我可以使用它pre_get_posts来最小化和减少查询,但这仍然给我一个非常快速的查询,如何完全消除它呢?
8 loop  query  homepage 

1
wp_insert_post添加meta_input
在该页面的文档中,wp_insert_post有一半的更改日志显示以下内容: 从以下版本开始:WordPress 4.4.0现在可以将'meta_input'数组传递到$ postarr以添加帖子元数据。 我正在使用Wordpress 4.4.2。我将尝试通过运行以下代码来添加新帖子: function handle_post($post) { wp_insert_post( array( 'post_title' => $post['title'], 'post_type' => 'werknemers', 'meta_input' => array( array( 'key' => 'name', 'value' => $post['name'] ), array( 'key' => 'city', 'value' => $post['city'] ) ) ) ); } 该帖子已添加到数据库,但没有元数据。我找到了这个堆栈帖子,但是我不知道如何实现if statement。 我也对添加分类法(tax_input)的方式感兴趣。

3
如何将标题添加到外发电子邮件?
我想在网站上的外发电子邮件中添加其他标头,以便可以轻松确定哪个网站发送了给定的电子邮件。(我在所有站点上都安装了标准功能插件,因此这样做很容易,并且配置电子邮件客户端以进行过滤并以其他方式对此标头进行操作将节省大量时间。) 我以为插入wp_mail功能很简单,但显然并非如此。 首先,我尝试了这个: add_filter('wp_mail', 'ws_add_site_header'); function ws_add_site_header() { return array('headers' => 'X-WU-Site: ' . parse_url(get_site_url(), PHP_URL_HOST)); } 在这里,我的数组优先于修改邮件设置的其他任何内容(例如Gravity Forms),因此HTML电子邮件开始显示为裸HTML且格式不正确。这是有道理的,因为GF添加的Content-type:标头已清除。但是我的标头已添加到电子邮件中。由于其他人也依赖于收到漂亮的电子邮件(我敢肯定,我所有网站的内容开发人员和最终用户都是如此),所以这是不可接受的。 然后,我的一位同事建议通过wp_parse_args()路由我的东西,因此: add_filter('wp_mail', 'ws_add_site_header'); function ws_add_site_header($args) { $new_header = array('headers' => 'X-WU-Site: ' . parse_url(get_site_url(), PHP_URL_HOST)); return wp_parse_args($args, $new_header); } 这样,就好像我的功能不存在一样-我的标头没有添加,但其他人的标头和邮件设置也没有删除。 在不加扰可能存在的任何其他过滤器的情况下,将标题添加到外发电子邮件的正确方法是什么?

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.