我正在学习关于自定义帖子类型的教程,但我无法理解某些函数是如何工作的。
请允许我再解释一下。
function my_updated_messages( $messages ) {
global $post, $post_ID;
$messages[\'product\'] = array(
0 => \'\',
1 => sprintf( __(\'Product updated. <a href="%s">View product</a>\'), esc_url( get_permalink($post_ID) ) ),
2 => __(\'Custom field updated.\'),
3 => __(\'Custom field deleted.\'),
4 => __(\'Product updated.\'),
5 => isset($_GET[\'revision\']) ? sprintf( __(\'Product restored to revision from %s\'), wp_post_revision_title( (int) $_GET[\'revision\'], false ) ) : false,
6 => sprintf( __(\'Product published. <a href="%s">View product</a>\'), esc_url( get_permalink($post_ID) ) ),
7 => __(\'Product saved.\'),
8 => sprintf( __(\'Product submitted. <a target="_blank" href="%s">Preview product</a>\'), esc_url( add_query_arg( \'preview\', \'true\', get_permalink($post_ID) ) ) ),
9 => sprintf( __(\'Product scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview product</a>\'), date_i18n( __( \'M j, Y @ G:i\' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
10 => sprintf( __(\'Product draft updated. <a target="_blank" href="%s">Preview product</a>\'), esc_url( add_query_arg( \'preview\', \'true\', get_permalink($post_ID) ) ) ),
);
return $messages;
}
add_filter( \'post_updated_messages\', \'my_updated_messages\' );
我复制了上述教程代码片段的一部分。在这个例子中,我知道$messages包含和数组,其中包含某些post类型。要允许自定义邮件发送到自定义帖子类型,需要创建一个新数组,然后返回。然后过滤函数my\\u updated\\u message()(我知道add\\u filter的作用)。
好的,问题是:
当一个新函数有一个参数时,调用该函数时必须传递该参数,对吗?在上述情况下,WP如何知道$消息实际上是来自WP的$消息很抱歉与上面的上下文完全无关,但是为什么var\\u转储($post\\u updated\\u messages);将null返回给我。我想看看里面有什么如能提供详细说明或任何教程的链接,将不胜感激。
最合适的回答,由SO网友:s_ha_dum 整理而成
当一个新函数有一个参数时,调用该函数时必须传递该参数,对吗?在上述情况下,WP如何知道$消息实际上是来自WP的$消息?
如果它是一个在其正常上下文中运行的WordPress钩子(您可以添加自己的钩子)(如果需要,您可以在任何地方运行过滤器),那么WordPress在以下情况下调用该函数:apply_filters(\'hook-name\', ....)
跑步。参数是在那个时候传入的,所以WordPress可以控制它。可以运行apply_filters
你自己,我不知道为什么你需要在发信息时这样做。正在应用the_content
过滤器可能非常常见,例如:
// data from some external source
$data = get_my_external_content();
$data = apply_filters(\'the_content\',$data);
现在,您已经通过该过滤器传递了自己的数据。同样,当
apply_filters
跑步。
抱歉,与上面的上下文完全无关,但是为什么var\\u转储($post\\u updated\\u messages);将null返回给我。我想看看里面有什么。
post_updated_messages
是一个挂钩名称,而不是可以转储的变量。在您的回拨中var_dump($messages)
将为您提供您必须处理的内容。
如果要查看筛选器和回调,请尝试var_dump($GLOBALS[\'wp_filter\']);
. 这是一个巨大的阵列。请注意。不过,并不是所有的事情都会出现。这取决于上下文以及已添加和未添加的过滤器。