动态模板页面调用共享分类CPT或插件POST类型:如何为插件克隆分类+设置动态短码

时间:2021-08-24 作者:Picturgency

我正在为一个朋友搜索者建立一个免费网站,并为280页制作一个模板,该模板的结构将与我们希望能够在1个位置修改它的结构相同。

我用elementor template builder. 在这个模板中,我从不同的帖子类型查询了几个网格内容块,它将根据common category.

对于CPT来说,这很简单。我将本机帖子类别与ACF共享到我的所有CPT的页面类型+中,然后使用Crocoblocks插件将id动态查询到帖子网格中。

逻辑是id of the page = id of the posts/custom posts

但是,我有一个pdf flipbook plugin Dearflip已经有了一个显示漂亮网格的短代码,我不想失去它的功能,比如在模式中打开动画书。这是一个有职位和类别的CPT。

我自己不编码,所以如果你能帮助我,我会很高兴的。

1/我需要dflip_category 从该插件共享相同的post category terms 像其他CPT一样page category 选中可以动态显示正确的内容。

要么我想办法把这个分类法显示在ACF中,这样我就可以修改它,从帖子类别中提取术语——我发现了这个https://www.acf-extended.com/features/modules/dynamic-taxonomies#existing-taxonomies 但我必须做得不对,它不起作用,或者我在函数中添加了一些钩子。php,但我不是一个程序员,所以我不知道如何做到这一点,我需要找到一种方法,用dynamic id 来自页面类别,因为它将是相同的id。因此,我正在寻找一种方法,将页面id动态注入到短代码中。

短代码网格如下所示[dflip books="slug"] 我想要这样的[dflip books="{insert_page_category_slug}"] [/dflip]

我找到了这个https://www.isitwp.com/get-custom-field-value-with-shortcode/https://www.engagewp.com/how-to-insert-custom-fields-into-shortcodes/任何关于正确代码的帮助都将非常棒!我一直在到处寻找如何做到这一点。这是我力所不及的。

Dearflip插件CPT名称:dflip分类法:dflip\\u类别页面(ACF)分类法:cat\\u id

如果有人能帮忙,请提前感谢。

1 个回复
SO网友:Picturgency

目前的解决方案是:创建一个插件,用当前页面段塞重新创建短代码。将页面slug命名为类别slug。并手动将类别添加到dflip。

目前还找不到更好的。

// Disable direct access
defined(\'ABSPATH\') or die(\'No script kiddies please!\');

// use page slug to call dflip book in same slug dflip_category
add_shortcode(\'dflip_book_slug\', \'shortcode_dflip_book_slug\');
function shortcode_dflip_book_slug($atts = array(), $content = \'\', $tag)
{
    global $post;

    // default parameters (but filtered, only declared ones are passed)
    // $atts = shortcode_atts(array(
    //   \'books\' => $post->post_name
    // ), $atts, $tag);

    $atts = is_array($atts) ? $atts : array();

    if (array_key_exists(\'books\', $atts)) {
        $atts[\'books\'] = str_replace(\'%slug%\', $post->post_name, $atts[\'books\']);
    } else {
        // par défaut on passe le slug
        $atts[\'books\'] = $post->post_name;
    }

    $atts_str = array();
    foreach ($atts as $key => $value) {
        $atts_str[] = $key . \'="\' . str_replace(\'"\', \'\\"\', $value) . \'"\';
    }

    $shortcode = \'[dflip \' . implode(\' \', $atts_str) . \']\' . $content . \'[/dflip]\';
    return do_shortcode($shortcode);
}

相关推荐