WordPress

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


12
有什么方法可以起草已发布页面或帖子的修订版?您使用了什么解决方法?
说我已经发布了页面或帖子。我现在想进行更改,但是我希望同事在它们上线之前先进行检查。有什么办法吗? 编辑:我确实意识到这目前不可能,这是我感兴趣的创造性解决方法。 在我当前正在使用的网站上,我还有一个单独的受密码保护的“临时”网站,用于草拟主要内容的更改/添加,一旦获得批准,我便将其复制并粘贴到实时站点中。我想知道是否有人使用过类似的方法,但是也许可以自动“推送”到实时站点? 我知道这个问题:开发/阶段与生产之间的数据库同步,但这更多是关于整个数据库而不是单个页面或帖子的批发同步。 现在提供赏金,以尝试找出一些其他解决方法。
38 draft 

1
我应该使用自定义帖子类型还是自定义数据库表进行插件开发?
我对编写wordpress插件还很陌生,但是我已经涉足了深层次的工作,我想确保自己在即将进行的大型项目中做得对。 我将大量地将wordpress扩展到一个相当大的Web应用程序中,并希望保持我的数据结构尽可能本地化,以依靠wordpress框架,但是我不知道创建自己的自定义数据库表是否更好或尝试使用自定义帖子类型。 我尚不知道我的所有数据,但是将有许多表(或cpt)被关联起来。我从研究中得出的“氛围”是,我应该避免使用自定义数据库表,但是我不确定如何确定最佳解决方案。 我特别关心三个方面: 如果我走这条路线,每个cpt我需要为我的额外字段分配的发布元字段的数量,如果这样做会使事情“棘手” 使用半复杂的关系过滤器获取报告的查询效率如何 如何最好地管理人际关系,尤其是当我有很多对许多人际关系时 有没有“正确”的方法?感谢您的输入。

7
add_action引用一个类
是否可以在“ add_action”中引用类而不是函数?似乎无法弄清楚。这只是所讨论功能的一个基本示例。 add_action( 'admin_init', 'MyClass' ); class MyClass { function __construct() { .. This is where stuff gets done .. } } 是的,那是行不通的。我也尝试过: $var = new MyClass(); add_action( 'admin_init', array( &$var ) ); 和: $var = new MyClass(); add_action( 'admin_init', array( &$var, '__construct' ) ); 并且: add_action( 'admin_init', 'MyClass::__construct' ); …
38 actions 

5
如何获取具有任何帖子状态的所有帖子?
我正在创建一个前端仪表板,其中需要显示当前用户的所有帖子。所以,我需要显示的帖子在所有各州,主要是published,trashed和pending。我现在使用一个简单的查询,但它仅返回已发布的帖子。 $query = array( 'post_type' => 'my-post-type', 'post_author' => $current_user->ID ); query_posts($query); 有人可以帮忙吗?我还需要做什么?

10
您使用什么流程进行WordPress开发?[关闭]
我对其他人如何为WordPress开发主题和插件感兴趣。对我来说,管理面板中的浏览器内编辑器不会删除它。目前,我只是使用带有PHP插件(NetBeans)的IDE,从服务器中拉出开发Web目录,在其中进行编辑,推送进行测试,然后再迁移到现场。 我正在寻找其他人如何使用他们选择的工具来管理工作流,以开发,测试和部署主题,插件,并在上线之前针对这些主题测试WordPress的最新版本。 我已将其设为社区Wiki,以便其他人可以共享那里的开发过程。我不希望在这里找到一个正确的答案-您的流程是您自己的,而且我不希望您为自己或其他任何人工作。我只是想通过查看对他人有效或无效的方式来提高开发插件和主题的能力。 这里的另一个问题讨论了支持WordPress开发的特定软件工具。在这里,我正在寻找可以独立于工具应用的更多流程和方法,除了某些任务可能仅在某些工具系列中才能完成。

5
如何在WP 4.4中禁用响应式图像?
我成功地将4.3.1安装转换为所有https。更新到4.4之后。我对新srcset属性有疑问。虽然src对图像的特性是使用HTTPS设置,该srcset属性是HTTP。这导致浏览器根本不显示任何图像。 在等待更好的修复时,我希望完全禁用设置srcset属性,以便所有图像都只有一个src属性。我怎么做?

2
如何获取静态首页的帖子ID?
我正在尝试使用首页作为特色图片的默认排序方式(例如,如果未设置特色图片,则想使用首页的图片) 但是我很难找到如何以安全的方式获取首页的帖子ID(以便当有人不可避免地更改首页时,我的代码仍然可以使用) 我知道我可以在代码中硬编码一个ID,但是当有人决定使用新的内容项作为首页时,这会中断。 我必须使用wp-query来实现吗?如果是这样,使用wp-query实现此目标的安全方法是什么?

7
通过wp_mail()发送多部分(文本/ html)电子邮件可能会导致您的域被禁止
摘要 由于WP Core中存在一个错误,具有讽刺意味的是,您的域被Hotmail(和其他Microsoft电子邮件)阻止了,因此使用wp_mail()发送多部分电子邮件(html /文本)(以减少电子邮件最终进入垃圾邮件文件夹的可能性)。 这是一个复杂的问题,我将详细分解以帮助某人找到可行的解决方案,并最终在核心中实现。 这将是一个有益的阅读。让我们开始... 错误 避免使时事通讯电子邮件最终进入垃圾邮件文件夹的最常见建议是发送多部分邮件。 多部分(MIME)是指在一封电子邮件中同时发送电子邮件的HTML和TEXT部分。客户端收到多部分消息时,如果可以呈现HTML,则接受HTML版本,否则将呈现纯文本版本。 事实证明这是可行的。当发送到gmail时,我们所有的电子邮件都将放入垃圾邮件文件夹,直到当它们到达主收件箱时我们将邮件更改为多部分。好东西。 现在,当通过wp_mail()发送多部分消息时,它将两次输出内容类型(multipart / *),一次是带有边界(如果是自定义设置的),一次是没有边界的。此行为导致电子邮件被显示为原始消息,而不是包括某些所有 Microsoft(Hotmail,Outlook等)在内的某些电子邮件的一部分。 Microsoft将将此邮件标记为垃圾邮件,而接收到的少量邮件将由收件人手动标记。不幸的是,Microsoft电子邮件地址被广泛使用。我们有40%的订户使用它。 微软通过我们最近进行的电子邮件交换确认了这一点。 标记消息将导致域被完全阻止。这意味着该邮件将不会发送到垃圾邮件文件夹,甚至根本不会发送给收件人。 到目前为止,我们已经屏蔽了3次主域名。 因为这是WP核心中的错误,所以发送多部分消息的每个域都被阻止。问题是大多数网站管理员都不知道为什么。我在进行研究时发现这一点,并看到其他用户在论坛等上进行讨论。这需要深入研究原始代码,并对这些电子邮件的工作方式有充分的了解,我们将继续进行下一步... 让我们将其分解为代码 创建一个hotmail / outlook帐户。然后,运行以下代码: // Set $to to an hotmail.com or outlook.com email $to = "YourEmail@hotmail.com"; $subject = 'wp_mail testing multipart'; $message = '------=_Part_18243133_1346573420.1408991447668 Content-Type: text/plain; charset=UTF-8 Hello world! This is …
37 email  wp-mail  bug 

1
如何使用自定义字段(搜索功能)过滤帖子列表(在WP仪表板帖子列表中)?
尽管我在Google上搜索了很多,但我还没有找到一个非常简单的问题的答案: 我有一些带有自定义字段(即Supplier_name)的帖子。我希望能够根据此自定义字段搜索和过滤我的帖子。换句话说,在管理员帖子列表中,我想要一个搜索框(名为“供应商名称”),可以在其中键入一个值(例如“ IBM”),然后单击一个搜索按钮,我返回所有具有名为“ supplier_name”的定制字段的帖子,如果是,则定制字段的值为“ IBM”。 我怎样才能做到这一点 ?

8
有条件地为短代码加载JavaScript / CSS
我发布了一个创建简码的插件,该插件需要一个JavaScript文件和一个CSS文件才能在包含该简码的任何页面上加载。我可以在所有页面上加载脚本/样式,但这不是最佳实践。我只想在调用短代码的页面上加载文件。我发现有两种方法可以这样做,但是都有问题。 方法1在shortcode处理函数中将标志设置为true,然后在wp_footer回调中检查该值。如果为true,则用于wp_print_scripts()加载JavaScript。这样做的问题是,它仅适用于JavaScript,而不适用于CSS,因为CSS应该在内部声明<head>,您只能在类似initor 的早期挂钩中执行此操作wp_head。 方法2提前触发并“向前看”,以查看当前页面内容中是否存在简码。我比第一种方法更喜欢这种方法,但是它的问题无法检测模板是否调用do_shortcode()。 因此,我倾向于使用第二种方法,然后尝试检测是否已分配模板,如果分配了模板,则将其解析为简码。但是,在此之前,我想检查是否有人知道更好的方法。 更新:我已经将解决​​方案集成到了我的插件中。如果有人想看到它在实时环境中充实,可以下载或浏览它。 更新2:由于WordPress的3.3,它现在可以打电话wp_enqueue_script()直接在短码回调里面,和JavaScript文件将文档的页脚中调用。从技术上讲,这对于CSS文件也是可行的,但应将其视为一种不好的做法,因为在<head>标记外输出CSS 违反W3C规范,可能会破坏FOUC,并可能迫使浏览器重新呈现页面。


12
使用元值作为序列化数组的meta_query
我正在一个项目中,在其中创建自定义帖子类型和通过与我的自定义帖子类型相关联的元框输入的自定义数据。不管出于什么原因,我决定以这样一种方式对元框进行编码,以使每个元框中的输入都是数组的一部分。例如,我要存储经度和纬度: <p> <label for="latitude">Latitude:</label><br /> <input type="text" id="latitude" name="coordinates[latitude]" class="full-width" value="" /> </p> <p> <label for="longitude">Longitude:</label><br /> <input type="text" id="longitude" name="coordinates[longitude]" class="full-width" value="" /> </p> 无论出于何种原因,我都喜欢为每个元框都使用一个单一的postmeta条目的想法。在save_post钩子上,我像这样保存数据: update_post_meta($post_id, '_coordinates', $_POST['coordinates']); 我这样做是因为我有三个metabox,每个帖子只有3个postmeta值;但是,我现在意识到了一个潜在的问题。我可能想使用WP_Query仅根据这些元值提取某些帖子。例如,我可能想获取所有纬度值大于50的帖子。如果我单独在数据库中拥有此数据,也许使用key latitude,我将执行以下操作: $args = array( 'post_type' => 'my-post-type', 'meta_query' => array( array( 'key' => 'latitude', 'value' => '50', 'compare' => '>' …

2
Meta_query比较运算符说明
我注意到在meta_query中可以使用一堆运算符进行比较。但是,我不太确定我应该使用什么运算符,就像=和LIKE运算符一样令人困惑。 我想知道每个操作员的确切含义,以及在什么情况下应该使用它们。 = != > >= < <= LIKE NOT LIKE IN NOT IN BETWEEN NOT BETWEEN NOT EXISTS 谢谢。

12
按元值排序,但包含没有一个的帖子
我一直在使用pre_get_posts过滤器修改内置的WP搜索,使用户可以按不同字段对帖子(包括一堆自定义帖子类型)进行排序。 我遇到的问题是,当我告诉WP按元值排序时,它将排除所有未设置该元值的帖子。如果将排序方式从“价格”更改为“日期”,这将导致结果数量发生变化,因为“帖子”没有设置“价格”,而“项目”却设置了。 这不是我想要的,所以我想知道是否有一种方法可以包含所有帖子-即使那些缺少我正在排序的元值的帖子-并将没有该值的帖子放在最后。 我知道如何在多个字段上进行排序,但这无济于事。 谢谢 似乎我不是唯一一个提出此问题的人:如何在wp_query的args中包含带有&不带有某些meta_key的帖子?但那里没有解决方案。 更新资料 我已经尝试了答案,但是不确定我是否理解正确,这是我现在所拥有的: <?php function my_stuff ($qry) { $qry->set('meta_query', array(array( 'key' => 'item_price', 'value' => '', 'compare' => 'NOT EXISTS' ))); $qry->set('orderby', 'meta_value date'); # Sorting works with meta_value as well as meta_value_num - I've tried both $qry->set('order', 'ASC DESC'); $qry->set('meta_key', 'item_price'); } 元值是一个数字(顾名思义,它用于存储价格) 更新2 …

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.