Как добавить список существующих тегов в описание панели тегов в Gutenberg WordPress - PullRequest
1 голос
/ 13 февраля 2020

Загадка

Я работаю над пользовательской темой WordPress. Я создал пользовательские типы записей и пользовательские таксономии, некоторые из которых имеют стиль тегов (а не стиль категорий). Все работает как надо, и соответствующие таксономии показывают, где они должны в своих соответствующих типах контента ('show_in_rest' => true).

НО Я хотел бы добавить список существующих в настоящее время тегов к описанию в блок тегов.

В настоящее время инструкции для тегов гласят: «Разделяйте запятыми или вводите ключ». Я хотел бы добавить что-то вроде «Существующие теги», а затем список тегов. В идеале , это будет генерироваться динамически, чтобы при добавлении новых тегов клиентами обновлялся список. Для указанного c сайта, над которым я работаю, даже текст c будет лучше, чем ничего.

Что у меня так далеко

Я нашел кого-то, спрашивающего несколько схожий вопрос и попытался использовать код из одного из ответов. Я использую модульный подход, поэтому я поместил enqueue_script в отдельный файл php, который я require_once -ing ...

В функциях. php, я имею получил:

...

require_once("lib/gutenberg/tag_options.php");

...

В tag_options. php У меня есть:

<?php

/**
 * Add a list of available tags to tag panels in the gutenberg editor.
 */
function radicati_tag_options() {
  wp_enqueue_script(
    'gutenberg-tag-options',
    get_stylesheet_directory_uri() . '/lib/gutenberg/tag_options.js',
    ['wp-blocks', 'jquery'],
    1.0,
    false
  );
}

add_action('enqueue_block_editor_assets', 'radicati_tag_options');

И в tag_options. js У меня есть:

window.onload = function() {

  // This is code I found on the internet, 
  // aimed at creating a custom panel...

  var el = wp.element.createElement;

  function customizeProductTypeSelector(OriginalComponent) {

    console.log(OriginalComponent);
    return function(props) {

      console.log(props.slug);

      // The slug of one of my custom tag-style taxonomies is "topic"
      // That's what I'm seeing in console.log, so I feel like I might
      // be on the right track!

      // Once I get this figured out, if need be I can write custom code
      // for each of my custom tag-style taxonomies :)

      if (props.slug === "topic") {

        return el("div", {}, "Product Type Selector");


        HELP! THIS IS WHERE IT ALL FALLS APART! 
        I CAN *REPLACE* THE CONTENTS OF THE TAG BLOCK 
        (AND THUS RENDER IT NOT A TAGS BLOCK ANYMORE) 

        BUT I JUST WANT TO ADD A PARAGRAPH CONTAINING 
        SOME TEXT, INCLUDING A LIST OF EXISTING TAGS 
        TO THE OTHERWISE PERFECTLY FUNCTIONAL BLOCK!


      } else {
        return el(OriginalComponent, props);
      }
    };
  }

  wp.hooks.addFilter(
    "editor.PostTaxonomyType",
    "my-custom-plugin",
    customizeProductTypeSelector
  );
};

TIA

К сожалению, документация о том, как связываться с Гутенбергом, все еще довольно неоднозначна, так что это насколько я смог получить. Я признаю, что мой React одинаково отрывочен, так что это жалкая комбинация: смеется: Если у кого-нибудь из вас есть какие-то подсказки, которые я вам скажу, я буду очень признателен за вашу помощь!

...