将POST类型PRAM添加到WP短码

时间:2017-02-23 作者:Poorya

你好我有这个program (使用ajax分页和ajax类别过滤器显示帖子)其效果很好,我希望它添加一个接受短代码中帖子类型的pram,因为我需要它来显示来自2部不同帖子类型电影和系列的帖子。我尝试了几种方法来做到这一点,但根本没有效果。希望你们能帮帮我。

我的短代码:

<?php echo do_shortcode(\'[ajax_filter_movies per_page="10"]\'); ?>
这很好,但我希望它像:

<?php echo do_shortcode(\'[ajax_filter_movies post_type="movies" per_page="10"]\'); ?>
基本代码来自here.

1 个回复
最合适的回答,由SO网友:danbrellis 整理而成

是否希望能够在帖子类型之间切换?

如果没有,在我看来,您可以复制与per\\u page参数相同的功能,这意味着:

在shortcode函数中,只需为post\\u类型向#container async div添加一个数据属性。

<div id="container-async" data-paged="<?php echo $a[\'per_page\']; ?>" data-posttype="<?php echo $a[\'post_type\']; ?>" class="sc-ajax-filter">

(您还需要通过添加“post\\u type”=>\'\'将其添加到您的shortcode\\u atts中)

然后在Javascript on(\'click\')函数中将其添加到$params:

$params    = {
    \'page\' : $page,
    \'tax\'  : $this.data(\'filter\'),
    \'term\' : $this.data(\'term\'),
    \'qty\'  : $this.closest(\'#container-async\').data(\'paged\'),
    \'pt\'   : $this.closest(\'#container-async\').data(\'posttype\')
};
最后,在php函数中,为WP\\U查询收集$args数组,获取值,然后添加post\\u类型:

$pt = $_POST[\'params\'][\'pt\'];

$args = array(
    \'paged\'          => $page,
    \'post_type\'      => $pt,
    \'post_status\'    => \'publish\',
    \'posts_per_page\' => $qty,
    \'tax_query\'      => $tax_qry
);

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗