编辑:由于否决票(没有评论!),我把这篇文章编辑得更具体一点。。。
为什么以下更改不起作用?
$custom_message = get_the_title( $post->ID ) .\'\'. $hash_tags;
收件人:
$custom_message = get_the_content( $post->ID ) .\' \'. $hash_tags;
原岗位
我正在尝试定制Jetpack Publicate发布的文本,以使用帖子内容而不是标题,因为我的帖子没有标题。这以前是可行的,但Jetpack中似乎发生了一些变化,现在默认使用标题和URL。
Jetpack Publication模块中的代码如下:
function __construct() {
$this->default_message = Publicize_Util::build_sprintf( array(
/**
* Filter the default Publicize message.
*
* @module publicize
*
* @since 2.0.0
*
* @param string $this->default_message Publicize\'s default message. Default is the post title.
*/
apply_filters( \'wpas_default_message\', $this->default_message ),
\'title\',
\'url\',
) );
$this->default_prefix = Publicize_Util::build_sprintf( array(
/**
* Filter the message prepended to the Publicize custom message.
*
* @module publicize
*
* @since 2.0.0
*
* @param string $this->default_prefix String prepended to the Publicize custom message.
*/
apply_filters( \'wpas_default_prefix\', $this->default_prefix ),
\'url\',
) );
$this->default_suffix = Publicize_Util::build_sprintf( array(
/**
* Filter the message appended to the Publicize custom message.
*
* @module publicize
*
* @since 2.0.0
*
* @param string $this->default_suffix String appended to the Publicize custom message.
*/
apply_filters( \'wpas_default_suffix\', $this->default_suffix ),
\'url\',
) );
我想知道是否可以将get\\u\\u内容添加到wpas\\u default\\u消息中,但尚未成功实现。
我还试图修改另一个插件(JeremyHerve)的代码,该插件将post标记添加为hashtags,如下所示changing get_the_title
到get_the_content
但它不起作用:
function tsj_publicize_hashtags() {
$post = get_post();
if ( ! empty( $post ) ) {
/* Grab the tags of the post */
$post_tags = get_the_tags( $post->ID );
/* Append tags to custom message */
if ( ! empty( $post_tags ) ) {
/* Create list of tags with hashtags in front of them */
$hash_tags = \'\';
foreach( $post_tags as $tag ) {
$hash_tags .= \' #\' . $tag->name;
}
/* Create our custom message */
// $custom_message = get_the_title( $post->ID ) .\'\'. $hash_tags;
$custom_message = get_the_content( $post->ID ) .\' \'. $hash_tags;
update_post_meta( $post->ID, \'_wpas_mess\', $custom_message );
}
}
}
/* Save that message */
function tsj_cust_pub_message_save() {
add_action( \'save_post\', \'tsj_publicize_hashtags\', 21 );
}
add_action( \'publish_post\', \'tsj_cust_pub_message_save\' );
}
有谁能告诉我如何在公开文本中使用帖子内容的正确方向吗?
最合适的回答,由SO网友:birgire 整理而成
只是一些一般性的评论:
为什么以下更改不起作用?
$custom_message = get_the_title( $post->ID ) .\'\'. $hash_tags;
收件人:
$custom_message = get_the_content( $post->ID ) .\' \'. $hash_tags;
请注意
get_the_content()
不将post ID作为输入参数,它依赖于全局变量,如
$pages
这是从
$post->post_content
(带有一些分页调整),在
WP_Query::setup_postdata()
方法
定义如下:
function get_the_content( $more_link_text = null, $strip_teaser = false ) {
global $page, $more, $preview, $pages, $multipage;
...
}
可以使用一个起点
$post->post_content
如果您有权访问
$post
对象或
get_post_field( \'post_content\', $post_ID );
如果你只有帖子ID并从那里开始。
请注意,如果需要使用save_post
钩子,您可以从回调中获取post ID和post对象:
do_action( \'save_post\', $post_ID, $post, $update );
所以你不需要使用
get_post()
.
PS:我想知道你是否可以在JetPack中使用这个钩子(只是略过它):
do_action( \'publicize_save_meta\', $submit_post, $post_id, $service_name, $connection );
但似乎每个服务/连接都会被触发。