根据帖子分类返回单个自定义帖子的快捷代码

时间:2016-10-06 作者:wadclapp

例如,如果我的自定义帖子类型为\'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"]
为“案例研究”注册新帖子时,将选择类别分类法(变体)。因此,如果为帖子选择的类别是“苏格兰”,并且用户在其用户配置文件中选择了这个国家,那么这将导致该案例研究(例如山区)针对苏格兰的变化。

非常感谢大家的帮助,我以前没有写过自定义的短代码-所以解释得越多越好-谢谢!

2 个回复
最合适的回答,由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();

}

SO网友:Benoti

要做到这一点,您必须创建自己的短代码。使用add_shortcode(), 创建一个可以获取所需所有数据的函数。在主题函数中。php

add_shortcode(\'casestudy\', \'myfunction\');
function myfunction($atts){

   $a = shortcode_atts( array(
    \'study_type\' => \'mountain\'
    ), $atts );
    $content=\'\';
    // Get your data with get_post_meta

    return $content;
}

相关推荐

浏览器刷新时删除数据库条目,AJAX PHP jQuery

我有一个表单,在通过ajax提交表单时更新数据库表中的列。一切都很好,数据库表列可以获取信息,但一旦刷新浏览器,信息就会从数据库中删除。如果meta\\u值不存在,但meta\\u值也在提交表单时创建的数据库中,则PHP将执行数据库更新。我希望信息保留在数据库中,直到或除非meta\\u值被删除或不存在。任何见解都将不胜感激。PHPadd_action(\'wp_ajax_hide_this\', \'hide_this_by_id\'); add_action(\'wp_ajax_nopriv_