Wordpress 短代码功能 returns 只有标题
Wordpress shortcode function returns only the title
我的问题是:尝试使用简单的短代码函数检索 the_content,它只检索标题。
即使应用其他过滤器,结果始终相同。
- 内容来自页面。
- 该函数在 functions.php 主题文件中声明。
使用 post(页面)id。
function shtcode_Func( $atts = array() ) {
// set up default parameters
extract(shortcode_atts(array(
'id' => '5'
), $atts));
$my_postid = $atts;//This is page id or post id
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
return $content;
}
add_shortcode('shortcodePage', 'shtcode_Func');
使用 [shortcodePage id=POST_ID] (int)
从小部件调用
结果:仅打印标题。
我尝试使用 'the_post_thumbnail' 更改过滤器并再次检索标题。
我很绝望:(
谢谢!!
您的简码功能有几处不正确,但主要是:
- 您正在使用
extract
但未使用 extract
中的任何内容
$atts
是一个数组,而不仅仅是 id
.
- 您正在使用
apply_filters('the_content')
。这实质上会覆盖 apply_filter 中内置的 WP。您想使用 add_filter
,但如您所见,这不是必需的。
这是根据您要执行的操作精简的简码:
function shtcode_Func( $atts ) {
// set up default parameters. No need to use extract here.
$a = shortcode_atts(array(
'id' => ''
), $atts);
// Use get_the_content, and pass the actual ID
$content = get_the_content('','', $a['id'] );
// This is the same
$content = str_replace(']]>', ']]>', $content);
// Return the content.
return $content;
}
add_shortcode('shortcodePage', 'shtcode_Func');
Try to use like this:
function shtcode_Func( $atts = array() ) {
// set up default parameters
extract(shortcode_atts(array(
'id' => '5'
), $atts));
$content_post = get_post( $atts['id'] );
ob_start();
$content = $content_post->post_content;
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
echo $content;
$str = ob_get_contents();
ob_end_clean();
return $str;
}
add_shortcode('shortcodePage', 'shtcode_Func');
我的问题是:尝试使用简单的短代码函数检索 the_content,它只检索标题。 即使应用其他过滤器,结果始终相同。
- 内容来自页面。
- 该函数在 functions.php 主题文件中声明。
使用 post(页面)id。
function shtcode_Func( $atts = array() ) { // set up default parameters extract(shortcode_atts(array( 'id' => '5' ), $atts)); $my_postid = $atts;//This is page id or post id $content_post = get_post($my_postid); $content = $content_post->post_content; $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); return $content; } add_shortcode('shortcodePage', 'shtcode_Func');
使用 [shortcodePage id=POST_ID] (int)
结果:仅打印标题。 我尝试使用 'the_post_thumbnail' 更改过滤器并再次检索标题。
我很绝望:(
谢谢!!
您的简码功能有几处不正确,但主要是:
- 您正在使用
extract
但未使用extract
中的任何内容
$atts
是一个数组,而不仅仅是id
.- 您正在使用
apply_filters('the_content')
。这实质上会覆盖 apply_filter 中内置的 WP。您想使用add_filter
,但如您所见,这不是必需的。
这是根据您要执行的操作精简的简码:
function shtcode_Func( $atts ) {
// set up default parameters. No need to use extract here.
$a = shortcode_atts(array(
'id' => ''
), $atts);
// Use get_the_content, and pass the actual ID
$content = get_the_content('','', $a['id'] );
// This is the same
$content = str_replace(']]>', ']]>', $content);
// Return the content.
return $content;
}
add_shortcode('shortcodePage', 'shtcode_Func');
Try to use like this:
function shtcode_Func( $atts = array() ) {
// set up default parameters
extract(shortcode_atts(array(
'id' => '5'
), $atts));
$content_post = get_post( $atts['id'] );
ob_start();
$content = $content_post->post_content;
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
echo $content;
$str = ob_get_contents();
ob_end_clean();
return $str;
}
add_shortcode('shortcodePage', 'shtcode_Func');