jak upravit aktuální odstavcový rozpis v tinymce s vlastními styly textu
<p>chci dát backend-uživatelům pouze 4 styly textu z čeho vybírat. titulek, podnadpis, odstavec a styl nazvaný <code>.statement</code>.</p><p>vyhledávání termínů jako "vlastní styly v tinymce" vždy skončil s tímto článkem z wordpress sám. <a href="https://codex.wordpress.org/tinymce\_custom\_styles">https://codex.wordpress.org/tinymce\_custom\_styles</a> </p><p> <a href="https://i.stack.imgur.com/z6uke.png"><img src="https://i.stack.imgur.com/z6uke.png" alt="enter image description here"></a> </p><p>bohužel nechci zpřístupnit další rozevírací seznam. potřebuji odstranit aktuální rozevírací obsah a naplnit ho vlastními styly.</p><p>v prvním kroku se vlastně nestarám o to, jak vypadají jak v rozevíracím seznamu, tak v samotném vizuálním editoru. klíčem k tomu je odstranit zbytečné možnosti stylingu; možnosti design a frontend nepodporují. (i když by bylo skvělé změnit vzhled uvnitř editoru)</p><p>.</p><p><code>function my\_mce\_before\_init\_insert\_formats( $init\_array ) {</code></p><p>podíval jsem se na <code>$init\_array</code> a nemohl jsem najít, kde je rozevírací seznam vytvořen.</p><p>nadšený pro vaše návrhy :)</p><p>louis!</p>
<p>měl jsem stejný problém a tady je to, co můžete udělat. níže uvedený kód zakáže značku h1 z oddílu formátů bloků. stejným způsobem můžete zakázat další značky a také přidat vlastní. ale nejsem si jistý, jak k nim přidat vlastní styly css. doufám, že tento kód vám dá nápovědu, jakým způsobem dig.</p><pre><code>//modify tinymce editor to hide h1. function tiny\_mce\_remove\_unused\_formats( $initformats ) { // add block format elements you want to show in dropdown $initformats['block\_formats'] = 'paragraph=p;heading 2=h2;heading 3=h3;heading 4=h4;heading 5=h5;heading 6=h6;preformatted=pre'; return $initformats; } add\_filter( 'tiny\_mce\_before\_init', 'tiny\_mce\_remove\_unused\_formats' ); </code></pre><p><br> <strong> aktualizovat: </strong></p><p>to, co hledáte, bylo možné před vydáním wordpressu 3.9. dříve jste museli napsat tyto řádky kódu, aby to bylo možné. <code>theme\_advanced\_styles</code> je bohužel zastaralý, protože wp 3.9 aktualizoval tinymce na verzi 4 ( <a href="https://codex.wordpress.org/tinymce">viz change log</a> ). více informací na blogu <a href="https://ozz.blog/2014/04/19/customizing-tinymce-4-0/">andrew ozz</a> .<br> <br> tak to bylo dříve ( <a href="http://wesbos.com/custom-wordpress-tinymce-wysiwyg-classes/">zdroj</a> ):</p><pre><code>function make\_mce\_awesome( $init ) { // deprecated settings $init['theme\_advanced\_blockformats'] = 'h2,h3,h4,p'; $init['theme\_advanced\_disable'] = 'underline,spellchecker,wp\_help'; $init['theme\_advanced\_text\_colors'] = '0f3156,636466,0486d3'; $init['theme\_advanced\_buttons2\_add'] = 'styleselect'; $init['theme\_advanced\_styles'] = "bigtitle=bigtitle;call to action button=ctabutton,rounded corners=rounded"; return $init; } add\_filter('tiny\_mce\_before\_init', 'make\_mce\_awesome'); </code></pre><p><br> <strong> řešení: </strong></p><p>každopádně mám své řešení pro váš úkol. můžete se zbavit výchozího rozevíracího seznamu a přidat do něj formáty se čtyřmi styly. to vám pomůže vyhnout se zmatkům s uživateli, z čeho vybírají styly.</p><p>zakázat výchozí rozevírací nabídku:</p><pre><code>function remove\_default\_format\_select( $buttons ) { //remove the format dropdown select and text color selector $remove = array( 'formatselect' ); return array\_diff( $buttons, $remove ); } add\_filter( 'mce\_buttons', 'remove\_default\_format\_select' ); </code></pre><p><br> přidat nový rozevírací seznam formáty ( <a href="https://codex.wordpress.org/tinymce\_custom\_styles">více zde</a> ):</p><pre><code>// callback function to insert 'styleselect' into the $buttons array function my\_new\_mce\_buttons( $buttons ) { array\_unshift( $buttons, 'styleselect' ); return $buttons; } // register our callback to the appropriate filter add\_filter( 'mce\_buttons', 'my\_new\_mce\_buttons' ); // callback function to filter the mce settings function my\_mce\_before\_init\_insert\_formats( $init\_array ) { // define the style\_formats array $style\_formats = array( array( 'title' =&gt; 'headline', 'block' =&gt; 'h1' ), array( 'title' =&gt; 'subheadline', 'block' =&gt; 'h2' ), array( 'title' =&gt; 'statement', 'block' =&gt; 'div', 'classes' =&gt; 'statement\_class', 'wrapper' =&gt; true ) ); // insert the array, json encoded, into 'style\_formats' $init\_array['style\_formats'] = json\_encode( $style\_formats ); return $init\_array; } // attach callback to 'tiny\_mce\_before\_init' add\_filter( 'tiny\_mce\_before\_init', 'my\_mce\_before\_init\_insert\_formats' ); </code></pre><p><br> poslední. zaregistrujte soubor css a získejte vizuální vzhled v editoru: ( <a href="https://developer.wordpress.org/reference/functions/add\_editor\_style/">další informace</a> </p><pre><code>/** * registers an editor stylesheet for the theme. */ function wpdocs\_theme\_add\_editor\_styles() { add\_editor\_style( 'custom-editor-style.css' ); } add\_action( 'admin\_init', 'wpdocs\_theme\_add\_editor\_styles' ); </code></pre><p><br> snad to pomůže.</p>
<p>zde je kód, který používám vždy, když nastavím nový blog wordpress:</p><p>custom admin footer text</p><pre><code>// customize admin footer text function custom\_admin\_footer() { echo '&lt;a href="http://www.netconstructor.com/"&gt;website design by netconstructor, inc.&lt;/a&gt;'; } add\_filter('admin\_footer\_text', 'custom\_admin\_footer'); </code></pre><p>vymazat verze informací z head krmiv</p><pre><code>// remove version info from the head of feeds function complete\_version\_removal() { return ''; } add\_filter('the\_generator', 'complete\_version\_removal'); </code></pre><p>odstraňte junk z hlavy stránk veřejných stránků</p><pre><code>// remove junk from the header of public website pages remove\_action('wp\_head', 'rsd\_link'); remove\_action('wp\_head', 'wp\_generator'); remove\_action('wp\_head', 'feed\_links', 2); remove\_action('wp\_head', 'index\_rel\_link'); remove\_action('wp\_head', 'wlwmanifest\_link'); remove\_action('wp\_head', 'feed\_links\_extra', 3); remove\_action('wp\_head', 'start\_post\_rel\_link', 10, 0); remove\_action('wp\_head', 'parent\_post\_rel\_link', 10, 0); remove\_action('wp\_head', 'adjacent\_posts\_rel\_link', 10, 0); </code></pre><p>odstranit oznámení o wordpressu pro všechny uživatele except sysadmin</p><pre><code>// remove the wordpress update notification for all users except sysadmin global $user\_login; get\_currentuserinfo(); if ($user\_login !== "sysadmin") { add\_action( 'init', create\_function( '$a', "remove\_action( 'init', 'wp\_version\_check' );" ), 2 ); add\_filter( 'pre\_option\_update\_core', create\_function( '$a', "return null;" ) ); } </code></pre><p>uživatelský admin logos:</p><pre><code>// custom admin login header logo function my\_custom\_login\_logo() { echo '&lt;style type="text/css"&gt; h1 a { background-image:url('.get\_bloginfo('template\_directory').'/images/excitesteps-login-logo.png) !important; } &lt;/style&gt;'; } add\_action('login\_head', 'my\_custom\_login\_logo'); // custom admin logic header logo add\_action('admin\_head', 'my\_custom\_logo'); function my\_custom\_logo() { echo '&lt;style type="text/css"&gt;#header-logo { background-image: url('.get\_bloginfo('template\_directory').'/images/excitesteps-icon.gif) !important; }&lt;/style&gt;'; } // custom admin login header link &amp; alt text function change\_wp\_login\_url() { echo bloginfo('url'); } function change\_wp\_login\_title() { echo get\_option('blogname'); } add\_filter('login\_headerurl', 'change\_wp\_login\_url'); add\_filter('login\_headertitle', 'change\_wp\_login\_title'); </code></pre> <p>doporučuji pro to použít vlastní taxonomii <em> ne </em> vlastní pole. archivy můžete třídit a zobrazovat na základě taxonomie mnohem snadněji než u vlastních polí.</p><p>pokud však chcete seznam na základě vlastního pole, budete muset upravit argumenty odeslané na stránku <code>query\_posts()</code> na stránce archivu a předat je v souboru <code>meta\_key</code> a <code>meta\_value</code>, které hledáte.</p><p>přidání proměnné dotazu:</p><pre><code>add\_action('init', 'add\_custom\_meta\_url'); function add\_custom\_meta\_url() { global $wp,$wp\_rewrite; $wp-&gt;add\_query\_var('location'); $wp\_rewrite-&gt;add\_rule('location/([^/]+)','index.php?location=$matches[1]','top'); $wp\_rewrite-&gt;flush\_rules(false); // this should really be done in a plugin activation } </code></pre><p>pak se vaše permalinks pro archiv stane něčím v souladu s <code>http://mycoollocationsite.com/location/england</code> <code>http://mycoollocationsite.com/location/ireland</code> <code>http://mycoollocationsite.com/location/usa</code> ... atd ...</p><p>dále budete muset přidat libovolnou hodnotu, která byla do vašeho umístění předána aktuálnímu dotazu:</p><pre><code>add\_action('parse\_query', 'apply\_custom\_meta\_to\_query'); function apply\_custom\_meta\_to\_query(&amp;$query) { if (isset($query-&gt;query['location'])) { $query-&gt;query\_vars['meta\_key'] = 'location'; $query-&gt;query\_vars['meta\_value'] = $query-&gt;query['location']; unset($query-&gt;query\_vars['location']); // you don't need this } } </code></pre><p>předpokládám, že ukládáte vlastní data do pole nazvaného <code>location</code> ... takže změňte, pokud se mýlím.</p><p>to vám však umožní filtrovat archivy na základě konkrétního umístění. pokud chcete tímto způsobem povolit archivy založené na datech, které budou vyžadovat některá další pravidla v mém prvním bloku kódu (právě teď by se zobrazil seznam <em> všech </em> příspěvky s <code>location</code> meta\_key).</p><p>místo toho doporučuji použít vlastní taxonomii. je to čistší, rozšiřitelnější a vyžaduje méně vlastního kódování. to je také přesně ta situace, pro kterou byly vytvořeny vlastní taxonomie ... tak prosím, neobjevujte kolo ...</p> <p>jednoduchým způsobem by bylo nastavit nějakou globální proměnnou na prvním spuštění widgetu a zkontrolovat ji. není-li již nastavena žádná nebo informační zpráva.</p><p>správným způsobem by pravděpodobně bylo pracovat s rozhraním a odstranit widget z dostupných, když ho přidáte do postranního panelu, ale to je cesta z mé ligy.</p> Zobrazit/Panely nastroju/Prizpusobit/Obsah nabidky/Posledni dokumenty pak v pravo Upravit/Odstranit. a neni to lepsi udelat jednoduseji? napr [https://365tipu.wordpress.com/2015/08/28/kde-zmenim-jme...](https://365tipu.wordpress.com/2015/08/28/kde-zmenim-jmeno-pocitace-s-windows-10-kde-ho-pridam-do-domeny-ci-pracovni-skupiny/) <p>rozhraní api <a href="http://codex.wordpress.org/widgets\_api#developing\_widgets\_on\_2.8.2b">widgetů</a> je nejrychlejší způsob, jak vytvořit widget, který lze znovu použít. příklad použití:</p><pre><code>class my\_widget extends wp\_widget { /** * php4 constructor */ function my\_widget() { my\_widget::\_\_construct(); } /** * php5 constructor */ function \_\_construct() { // actual widget processes } /** * echo the settings update form * * @param array $instance current settings */ function form($instance) { // outputs the options form on admin } /** * update a particular instance * * @param array $new\_instance new settings for this instance as input by the user via form() * @param array $old\_instance old settings for this instance * @return array settings to save or bool (false) to cancel saving */ function update($new\_instance, $old\_instance) { // processes widget options to be saved } /** * echo the widget content * * @param array $args display arguments including before\_title, after\_title, before\_widget, and after\_widget * @param array $instance the settings for the particular instance of this widget */ function widget($args, $instance) { // outputs the content of the widget } } register\_widget('my\_widget'); </code></pre> Je [prettify Automake](http://kim.tensta.gannert.se/projects/pretty-am/) , co chcete?







**Edit** : Jak Automake 1.10b, [tichý pravidla](http://www.gnu.org/software/hello/manual/automake/Options.html) je postavena-in. Není stejný kód nebo styl, ale podobný účinek. To co chces se resi standardnim UNIXovym prikazem "tail". Pro Windows existuji klony, napr. <http://tailforwin32.sourceforge.net/>V kombinaci s vyse zminenym PowerMenu mas idealni reseni. <blockquote> <p>existuje lepší způsob, jak toho dosáhnout pomocí vlastních taxonomií?</p> </blockquote><p>máte pravdu na těch penězích. namísto pokusu o vytvoření vlastního příspěvku do dítěte standardního příspěvku (protože nemůžete) doporučuji použít vlastní taxonomii k objednání věcí.</p><p>v zásadě můžete vytvořit vlastní hierarchickou taxonomii a použít ji k "kategorizaci" standardních příspěvků i vlastních příspěvků. vaše standardní příspěvky byste označili jako nadřazené v taxonomii a své vlastní příspěvky jako dítě.</p><h3>druhá možnost</h3><p>další možností by bylo použití vlastního pole pro rodičovské dědictví. to by mohlo být o něco rychlejší, než aby kód a intuitivnější k použití (plus to vám dá nějaké přidané ovládání).</p><p>přidejte vlastní pole meta do vlastního typu příspěvku nazvaného "rodiče". to pak může být seznam id příspěvků, které by měl být podřízený příspěvek vnořen. pokud potřebujete seznam vyvolat, můžete provést rychlý dotaz na <code>select</code> všechny vaše vlastní příspěvky, které mají rodičovský identifikátor v seznamu svých rodičů.</p> <p>nejlepší je vytvořit šablonu stránky s následujícím kódem. také se musíte rozhodnout, zda budete používat značku nebo kategorii. níže uvedený kód předpokládá, že používáte kategorii.</p><pre><code>&lt;div class="news"&gt; &lt;?php //the query wp\_query('showposts=5&amp;category\_name=news'); //the loop if ( have\_posts() ) : while ( have\_posts() ) : the\_post(); ?&gt; &lt;h2&gt;&lt;a href="&lt;?php the\_permalink() ?&gt;" rel="bookmark" title="permanent link to &lt;?php the\_title\_attribute(); ?&gt;"&gt;&lt;?php the\_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt; &lt;div class="post\_content"&gt; &lt;?php the\_excerpt(); ?&gt; &lt;/div&gt; &lt;? endwhile; endif; //reset query wp\_reset\_query(); ?&gt; &lt;/div&gt; &lt;div class="events"&gt; &lt;?php //the query wp\_query('showposts=5&amp;category\_name=events'); //the loop if ( have\_posts() ) : while ( have\_posts() ) : the\_post(); ?&gt; &lt;h2&gt;&lt;a href="&lt;?php the\_permalink() ?&gt;" rel="bookmark" title="permanent link to &lt;?php the\_title\_attribute(); ?&gt;"&gt;&lt;?php the\_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt; &lt;div class="post\_content"&gt; &lt;?php the\_excerpt(); ?&gt; &lt;/div&gt; &lt;? endwhile; endif; //reset query wp\_reset\_query(); ?&gt; &lt;/div&gt; </code></pre>