wordpress 函数_所有开发人员都应该知道的15个有用的WordPress函数

WordPress具有供我们开发人员使用的强大功能。 我们可以凭空拿出帖子列表,处理几乎所有关于它们的内容,抓住我们想要的任何用户,并随意显示他们的社交媒体联系。

但是,由于未知原因,似乎忽略了很多功能。 我已经使用WordPress编码大约8年了,偶尔我仍然发现一些新东西! 让我们看一下我最喜欢的一些被忽略的函数,并学习如何在使用过程中使用它们。

antispambot()

我通常对此很挑剔,它似乎是代码库中最隐蔽的功能之一。 <code>antispambot()</code>用HTML实体替换字符,这是一种从恶意抓取工具屏蔽电子邮件地址的方法。

$email = 'mymail@mail.com';
echo 'You can contact me at ' . antispambot( $email ) . ' any time'.

尽管这是一个有用的花絮,但它也是为什么有人批评WordPress的一个例子–这是一个可怕的命名函数。 通过阅读函数名称,您不知道它的作用。

human_time_diff()

大约一年前,当我第一次了解此功能时,我认为它一定是最近添加的,但在变更日志中却被忽略了。 不完全的…

自1.5版(即2018年2月17日!)以来,该功能(用于输出两个时间戳之间的差异)就已经存在。

我从抄本中借来的以下简短代码片段显示了当前帖子的发布时间。 它使用帖子发布日期作为第一个参数 ,使用当前日期作为第二个参数

echo 'This post was published ' . human_time_diff( get_the_time( 'U' ), current_time( 'timestamp' ) ) . ' ago';
get_post_meta()

在这里忍受,我知道这是一个很好用的功能,但是,它的工作原理并不那么常见。 首先,通过省略第二和第三个参数,您可以提取帖子的所有元数据

$all_meta = get_post_meta( 14 );

即使您只获取单个键的数据,反之亦然会提取所有后置元。

原因实际上是很合逻辑的。 元数据在多个地方使用。 如果每次使用<code>get_post_meta()</code>查询数据库,我们最终都会得到太多的查询。 相反,如果您提取元数据,它将对其全部进行缓存,并在所有后续的元数据检索中使用缓存的值。

wp_upload_bits()

此功能是直接文件上传功能 。 虽然它不会将文件移到上载文件夹中并将其添加到WordPress媒体部分,但它非常方便,您可以随时使用<code>wp_insert_attachment()</code>函数进行其余操作。

$upload = wp_upload_bits( $file['name'], null, file_get_contents( $file['tmp_name'] ) );

对此有一些解释:第一个参数是文件名。 第二个已贬值,因此应将其设置为null(WordPress一致性下的Eyeroll)。 第三个参数是文件的实际内容。

get_post_field()

在过去,我看到了很多示例,其中有人编写了一个循环来获取帖子的评论计数,或者为此编写了专门的数据库查询。 您不需要它们,您需要的是<code>get_post_field()</code> 。 此函数数据库中的单个帖子检索单个字段的值 。 让我们来评论数吧!

This post has <?php echo get_post_field( 'comment_count', 4124 ) ?> comments.
wpautop()

这项功能已经引起了人们的关注,但仍然相对未知。 它与PHP本机nl2br类似,但是它没有创建新行,而是将您的内容包装在段落中

如果您有一个文本框,并且要确保当用户创建带有双换行符的段落时,它们也可以在前端保持可见,这很有用。

<h2>What Our Users Say</h2>
<?php echo wpautop( $user_comment ) ?>
wp_is_mobile()

这个恰当命名的功能可以检测用户何时在移动设备上,并允许您相应地显示内容 。 由于这是一个条件标记,因此它会根据情况返回true或false。

<?php if( wp_is_mobile() ) : ?>
Visit our website on your desktop for a richer user experience
<?php endif ?>
wp_redirect()

最后一个示例显示了另一个简洁的函数: <code>wp_redirect()</code> 。 应该使用它代替PHP本机的<code> header()</ code>函数。 WordPress重定向功能允许您设置要重定向到的URL,还可以设置状态代码 ,也非常适合处理永久重定向。

// For a URL which is no longer in use
wp_redirect( 'http://website.com/new-url/', 301 );
paginate_links()

我敢打赌,此功能的部分原因在于WP-PageNavi插件的普及。 默认情况下,WordPress 在帖子列表的末尾显示上一个/下一个链接 。 WP-PageNavi 替换为页码

实际上,可以使用<code>paginate_links()</code>函数完成一些工作。 它有很多参数,所以我建议您看一下文档

下面的代码示例显示了如何将其添加到默认循环中,但是将其添加到自定义循环中并不是一件容易的事。

global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );
wp_die()

此函数是PHP die()函数的补充。 不同之处在于此函数将显示WordPress样式HTML,而不仅仅是纯文本。 您可以使用此函数停止PHP执行。 您可以添加要显示的消息,标题和其他参数,例如:

wp_die( "Oops, you don't have access to the", "Permission Denied" );
has_block()

在5.0版中,WordPress引入了一个基于块的编辑器,代号为Gutenberg。 该函数将识别内容是否包含古腾堡,与has_shortcode()函数has_shortcode() 。 如果内容确实包含一个块,它将返回true否则,将返回false

<?php
if ( has_block() ) {
    // Content has a block.
} ?>
wp_set_script_translations()

由于WordPress用户界面的许多部分都将迁移到JavaScript,因此需要一种便捷的方法在WordPress可以解析和理解JavaScript中注册可翻译文本。 使用此功能可以为脚本设置翻译后的字符串。 下面是一个示例:

wp_enqueue_script( 'my-script', plugins_url( 'js/my-script.js', __FILE__ ) );
wp_set_script_translations( 'my-script', 'mu-text-domain' );
register_block_type()

WordPress 5.0中的另一个突出功能。 此功能允许您在新的WordPress编辑器中注册新块。 您的块将出现在新的编辑器中并插入。

register_block_type( 'my-plugin/new-block', array(
    'title' => 'New Block',
    'icon' => 'megaphone',
    'category' => 'widgets',
    'render_callback' => 'render_function_callback',
) );
rest_do_request()

此功能允许您通过PHP调用WordPress REST API端点。 当您需要从REST API检索输出以处理将在PHP端而不是浏览器(前端)端进一步处理时,此功能非常有用。

$request = new WP_REST_Request( 'GET', "/wp/v2/posts" );
$request->set_header( 'X-WP-Nonce', wp_create_nonce( 'wp_rest' ) );
$response = rest_do_request( $request );
$data = 200 === $response->get_status() ? $response->get_data() : [];
rest_preload_api_request()

在WordPress中构建大量JavaScript的UI时,通常需要在页面内加载一组初始数据。 这是允许您执行此操作的功能。 例如,此函数应与array_reduce结合使用。

// Preload common data.
$preload_paths = array(
    '/',
    '/wp/v2/types?context=edit',
    '/wp/v2/taxonomies?per_page=-1&context=edit',
    '/wp/v2/themes?status=active',
);
preload_data = array_reduce(
	$preload_paths,
	'rest_preload_api_request',
	array()
);
wp_add_inline_script(
	'wp-api-fetch',
	sprintf( 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', wp_json_encode( $preload_data ) ),
	'after'
);
结论

这些只是其中一些功能,其他功能似乎鲜为人知。 我大约每两个月就会发现一个新的强大功能,并且我确信我的开发人员朋友可能会让我们更加惊讶。

如果您有喜欢的晦涩功能或有用但无法使用的功能,请在评论中告知我们!


翻译自: https://www.hongkiat.com/blog/useful-wordpress-functions/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值