例如,如果我的自定义帖子类型为\'Case Studies\',
首先,我需要能够查询single 具体的案例研究,但假设有几个variations 单一案例研究;
“威尔士”、“英格兰”、“苏格兰”。需要根据该帖子(同名)的类别分类法选择正确的帖子。
当发现具体案例研究及其变化时,我们可以这样说:
案例研究:最高峰
海关邮政类别(分类法):苏格兰
然后,我需要将这些信息放入html模板中,例如,输出将是(从自定义帖子中提取的数据):
<h3>Highest Mountain</h3>
<p>Here would be the content specific to Scotland...</p>
因此,当用户将快捷码输入到\\u content textarea时,他们只需输入例如。
[casestudy study_type="mountain"]
为“案例研究”注册新帖子时,将选择类别分类法(变体)。因此,如果为帖子选择的类别是“苏格兰”,并且用户在其用户配置文件中选择了这个国家,那么这将导致该案例研究(例如山区)针对苏格兰的变化。
非常感谢大家的帮助,我以前没有写过自定义的短代码-所以解释得越多越好-谢谢!
最合适的回答,由SO网友:ClemC 整理而成
从你提供的信息来看,我并不十分清楚。但据我所知,你的问题是这样的
假设用户在normal 该快捷码将从您的自定义帖子类型中提取信息case_studies
:
[casestudy study_type="mountain"]
因此,首先,您的短代码处理程序:
add_shortcode( \'casestudy\', \'my_shortcode\' );
function my_shortcode( $atts ) {
$a = shortcode_atts( array(
\'study_type\' => \'mountain\',
), $atts );
$content = my_template( $a );
return $content;
}
密切关注
shortocode_atts()
作用这是为了过滤
accepted 下面模板函数的查询将能够处理的参数。
然后,您的模板:
function my_template( $a ) {
/**
* I believe we should be in the loop already when this function is being called.
* So to get the category slug of the current post in which the user has put the shortcode, you can try this.
*/
$category_terms = get_the_category();
$args = array(
\'post_type\' => \'case_studies\',
\'name\' => $a[\'study_type\'],
\'category_name\' => $category_terms[0]->slug,
\'posts_per_page\' => 1,
);
$query = new WP_Query( $args );
ob_start();
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
the_post();
echo \'<h3>\' . get_the_title() . \'</h3>\';
echo \'<p>\' . get_the_content() . \'</p>\';
}
reset_postdata();
}
return ob_get_clean();
}