Questions tagged «php»

对于有关用WordPress核心,插件和主题编写的服务器端编程语言的问题。关于在WordPress上下文之外使用PHP的问题不在主题之列,但可能会在Stack Overflow上提出。

5
如何检查插件(WooCommerce)是否处于活动状态?
我正在尝试修改WooCommerce页面的头部和底部。我有一条if声明应该针对WooCommerce的商店和购物车,但事实并非如此。如果在if语句后修改PHP,则没有任何变化。但是如果我在else声明中修改PHP 是可行的: 这不起作用: <?php if (function_exists('woocommerce')): ?> <?php if (is_cart() || is_shop()): ?> <?php get_template_part('inc/CHANGE'); ?> <?php endif ?> <?php else: ?> <?php get_template_part('inc/page-header'); ?> <?php endif ?> 这确实有效: <?php if (function_exists('woocommerce')): ?> <?php if (is_cart() || is_shop()): ?> <?php get_template_part('inc/page-header'); ?> <?php endif ?> <?php else: ?> <?php get_template_part('inc/CHANGE'); …


1
何时使用异常vs错误对象vs普通false / null
我正在编写插件,正在尝试确定何时使用不同的错误处理方法。 我正在考虑三种方法: 引发异常(自定义类) 返回错误对象(WP_Error的扩展名) 只需返回null / false 我正在考虑的一些情况 尝试获取/设置注册表中不存在的选项 将无效的值传递给方法(应该很少) 调用类的重载程序无法解析的方法 有什么建议吗?由于编写WordPress插件有一些特殊的注意事项,因此我不确定是否值得在一般的PHP板上进行询问。


3
为什么需要在数组中包装一个函数($ this,function)
我是PHP和WordPress的新手,所以请保持温柔! 我正在构建一个插件-遵循一些教程,使其全部正常工作。 我的问题是,为什么要调用的函数包含在array($this, function)?中?例如,我的类中有此构造函数代码 function __construct() { add_action( 'admin_init',array( $this, 'getStuffDone' ) ); } getStuffDone函数可以正常启动-但是为什么必须采用其所使用的格式? 非常感谢任何见解。
8 php 

3
在插入媒体模式中为数据属性添加自定义输入
我正在尝试将文本输入添加到“插入媒体”模式,以希望能够向data-图像的父锚添加html5 属性。 <a class="fancybox" href="..." data-fancybox-group=" "> <-这部分 <img class="wp-image-871" src="..." alt="..." width="245" height="333" /> </a> 到目前为止,我已经能够将输入添加到模式中: 在我的functions.php文件中使用以下代码: function add_fancybox_input( $form_fields, $post ) { $form_fields['fancyboxGroup'] = array( 'label' => 'fancybox group', 'input' => 'text', 'value' => 'testing', 'helps' => 'use this to group images in fancybox', ); return $form_fields; } …

1
Wordpress Visual Editor剥离HTML更改
当我使用WordPress HTML编辑器添加icomoon图标时,如下所示: <span class="icon-shield"></span> 然后切换到视觉编辑器,然后再回到HTML编辑器,图标消失。我正在尝试包含此Javascript来解决此问题。我查看了wp_enqueue_scripts并将其放在functions.php中,但仍然无法解决问题。 function oakwood_tinymcefix() { wp_enqueue_script( 'tiny_mce' ); echo '<script type="text/javascript">' , 'tinymce.init({ ... extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]" });' , '</script>'; } add_action( 'admin_enqueue_scripts', 'oakwood_tinymcefix' ); 我怎样才能解决这个问题?

1
在单个页面上显示具有多种帖子类型和相同关系的查询
我正在创建一个客户门户,我的客户可以维护他们的项目并在Wordpress中留下反馈。我有两种自定义的发布类型,分别称为“客户”和“项目”,它们各自在后端相互提取信息。当我创建客户端时,如果我可以将客户端分配给项目,它会自动在项目发布类型的下拉菜单中生成其postID。 我要完成的工作是通过在前端的单个页面上显示与所选客户端关联的所有项目。单个页面将是由客户帖子类型生成的客户门户。 我似乎无法显示相关的帖子。这是我的代码single.php,将在客户门户上显示项目。 <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $loop = new WP_Query( array( 'post_type' => array( 'projects'), 'posts_per_page' => -1, 'paged' => $paged, 'meta_query' => array( array( 'key' => 'a_client', // name of custom field 'value' => '"' . get_the_ID() . '"', 'compare' => 'LIKE' ) ) …

1
WordPress主题和PHP单元
有没有将PHP单元测试与WordPress主题结合使用的示例,似乎很多关于该主题的博客都过时了,因为核心单元测试与trac无关,但是昨晚-我拉了trac并尝试建立示例进行测试的主题。它无法正常工作,您必须运行所有测试以测试您的主题,即使您尝试并需要一个文件,它也会在WordPress实例化之前试图要求它,并且文件变得一团糟。 无论如何,我知道有用于主题单元测试的插件-但这只会安装大量“尝试”并破坏您的主题的帖子-不会测试底层逻辑-尤其是在构建框架的情况下-php单元在这里最好您可以测试代码的所有不同选项和实现。 那么有没有办法在主题内运行PHPunit?

1
允许编辑者编辑待处理的帖子,但不能编辑草稿的帖子
我有大量具有编辑器功能的用户,可以帮助您完成帖子提交。这是我目前为此角色设置的: 如您所见,他们被允许edit_posts,edit_others_posts但他们不能edit_published_posts。这意味着他们可以编辑处于草稿和待处理状态的帖子。 现在,我想限制他们只能编辑待处理的帖子。因此,他们将无法触摸草稿帖子(除非他们是帖子的作者)。不幸的是,没有edit_pending_posts…… 应该有的能力。 我该如何解决?

2
PHP单元测试WordPress?
考虑到WordPress的编写方式以及它与数据库的交互方式,以及它不是非常面向对象的面向对象,是否有一种方法可以对主题进行单元测试?有没有一种方法可以对与WordPress交互的框架(不是主题框架)进行单元测试,例如,您可以编写用于处理循环,处理小部件的单元测试吗? 如果有的话,有没有例子?我知道如何编写单元测试,但是我从未尝试为主题编写一个。 有什么想法吗?

2
如果Google将整个帖子分成几页,则将其编入索引
尽管这是一个问题,但对于使用分隔其帖子的发布者也是一个严重警告<!--nextpage-->。 和我一起裸露。我运行了一个流量很高的多作者平台,该平台在搜索引擎上排名很高。在进行与SEO相关的改进时,我注意到Google仅索引了分成几页的文章的第一页。我是怎么注意到的? 因为有人抓住了文章未索引页面的内容并将其发布在自己的网站中。这导致他们在该特定关键字上的排名高于我。实际上,让我重新表述一下,我网站的文章甚至没有被索引到第一页之外。 我的问题是,如果文章分成几页,如何使搜索引擎对整个文章进行索引?理想情况下,如果访问者是搜索引擎,则该脚本将显示完整的文章(如果这样做不会对SEO有害)。欢迎其他建议。 附带说明一下,如果我喜欢Black Hat技术,那将是我可以利用的内容的金矿。想一想。 而且,就个人而言,应该在以后的Wordpress更新中解决此问题。 更新:是详细讲述了一个类似的问题WordPress的创建相同的规范网址为分页序列的所有网页被要求在这里,然而答案被张贴,并标记为正确不回答这个问题。该解决方案仅适用于分页评论,不适用于分页帖子。 更新2:根据Google的这篇博客文章,我们可以使用rel=”next”和rel=”prev”指示页面之间的关系。例如,这就是我们应该在第2页中包括的<head>内容: <link rel="canonical" href="http://domain.com/article/2" /> <link rel="prev" href="http://domain.com/article/1" /> <link rel="next" href="http://domain.com/article/3" /> 如果在它之前/之后没有页面,则不应有rel =“ prev”或“ next”。

3
自定义walker_nav_menu中忽略了start_lvl
这是我的第一个涉及WordPress的项目,我一直试图为页脚菜单创建自定义的Walker。 我基本上想将菜单从<ul> <li></li> </ul>结构更改为<p> <span></span> </p>结构。 菜单和东西正在显示文件,我已经能够调整start_el和end_el功能而没有问题,所以现在我得到了: <ul> <span>*link*</span> <span>*link*</span> </ul> 很明显,它已经写到一半了start_lvl(),end_lvl()如下所示,但是它们被WordPress忽略了-我放在它们中的任何内容(即使die())都没有执行(这有点可疑),但是我知道该类正在被调用是因为该start_el()功能。 function start_lvl(&$output, $depth = 0, $args = array()) { $output = "\n<p class=\"sub-menu\">\n"; } function end_lvl(&$output, $depth = 0, $args = array()) { $output .= "\n</p>\n"; } 有谁知道为什么会这样-我错过了一些非常明显的事情吗? 5.3.6如果有帮助,我将在Apache上使用PHP运行最新版本的WordPress 。 提前致谢, 费利克斯:)
8 php  functions  menus  html  walker 

2
如果当前页面有子页面,则返回true的函数
我正在尝试创建一个简单的功能来进行“状态测试”。目的是测试并查看正在查看的当前页面是否具有任何子页面。使用此更改布局以适应子页面。以下代码似乎应该可以工作,但是可惜没有骰子。 有人看到我想念的吗? function is_subpage() { global $post; // load details about this page if ( is_page() && $post->post_parent ) { // test to see if the page has a parent return true; // return true, confirming there is a parent } else { // there is no parent so ... …

4
使用“特色图片”进行响应式网页设计的最佳方法是什么?
我有一个绝妙的主意,由于WordPress已经完成了一些工作,所以我只需要找到一种很好的方法来完成这项工作。 我正在从事一个项目,该项目需要响应所有设备,无论是台式PC还是移动设备。因此,我希望图像也能响应,这意味着移动设备不应加载50KB +的图像。 对于每个页面或每个帖子,我都可以使用“缩略图”添加“精选图片”,该图片在全尺寸下约为950x250(约60KB)。如果我在iPhone / Android上加载网站,则不希望加载〜60KB的图片,而是希望在其位置加载小缩略图。 响应图像的默认方法是使图像的宽度为父容器的100%,因此,如果还调整了父容器的大小,它将自动调整大小。这不是放大图像的最佳方法。 我考虑过尝试Filament Group的响应式图像脚本,但是我尝试了一下,但效果不佳。可以通过用户代理检测来实现此目的的一种方法,但是我也不愿意使用这种方法,因为可以欺骗用户代理。 这是即时调整图像大小的另一种方法,但这似乎是在重复WordPress已经完成的工作。 如果有一种方法可以对媒体库图像执行此操作,而WordPress已被默认设置为已创建所有调整大小的缩略图,那将是更好的选择。
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.