This example of multilingual child theme of Twenty fifteen contains in this category some (short) notes about WordPress coding and more… the translation of the original note is not always available in other language 🙁
WP 4.4-alpha: taxonomy.php makes little babies ;-)
The taxonomy is the basis of categories, keywords (tags) and other rankings in WordPress (like language with xili-language trilogy). Since WP 2.3, all key components are found in the file wp-includes / taxonomy.php. WP 4.4 release announces a big change. The developer will seek information in 3 files:
<?php /** * Core Taxonomy API * * @package WordPress * @subpackage Taxonomy * @since 2.3.0 */ /** Core taxonomy functionality */ require_once( ABSPATH . WPINC . '/taxonomy-functions.php' ); /** WP_Term class */ require_once( ABSPATH . WPINC . '/class-wp-term.php' ); /** WP_Tax_Query class */ require_once( ABSPATH . WPINC . '/class-wp-tax-query.php' );
including the new wp-term class that strengthens the previous object describing the terms methodically …
Added to this is the new term meta table that will be very useful to supplement the description of a tag, for example.
It is too early to draw conclusions but Xili-language will continue to take advantage of these new classes, functions and tables.
For now, Xili-language still works;-)
Justin Tadlock has published a comprehensive article for developers.
To still follow (closely) …
New documentation to develop a theme
Via the homepage for developers by WP contributors, the index for topics not yet available but many pages are already available.
Some entries :
Basics. On the left of the page, the summary is almost complete.
Enjoy reading !
Customizer and param show_in_nav_menus and custom posts or taxonomies
New with WordPress 4.3:
When registering new taxonomy or new post !
If you don’t want unexpected new item in the new Menu Customizer, param show_in_nav_menus
must be set to false
!
The new items list appears in the second column of the Theme Customizer when a menu is selected !
Param show_ui
set to false
is not enough !
Be aware about some plugins when creating multilingual WordPress website…
Around 6 years ago, when xili-language was started, to resume only two plugins (WPML, qTranlate) were available with very different data architectures. Neither of them respected the architecture of WordPress core since the first added many tables and the second changed the content of posts by compacting the different languages in each field. It is true that taxonomies had appeared with WP 2.3. Today, the offer is bloated as the ongoing attempts to show the comparison .
Two extensions have recently emerged and their architecture, once installed will compromise more or less seriously the database. “Multi language” adds tables to put the translations of posts thus without extension, can not be recovered.
WPGlobus “Multilingual everything” as it modifies like qTranslate (and its successors qTranslateX) content as shown in the database tables below:
and when it makes multilingual (via tabs), we note the significant change of the field of post table … here each field containing the three languages in {}! How then will be queries ? At least not according to the rules WP_Query 🙁
“Babble” does not use taxonomies but the custom post type to store posts according to language. Not easy for queries … to follow because by yet officially in filing plugins (repository).
Working with a content management system (CMS) such as WordPress requires some principles, the first is to preserve data integrity before and after adding “tag” that specifies the language (taxonomy) or links to articles in other languages (custom field). This is the basic principle of Xili-language trilogy established since its creation and enduring the version of WP 2.3 to 4.3, which will be out soon.
Michel
Multisite and custom taxonomy… quid ?
In multisite context and WordPress version 4.2.2, with this function in blog_id #3:
switch_to_blog( 2 );
have we really switched in blog_id #2 to fire a query (new WP_Query ( $query ) ;
) including a custom taxonomy here (‘domain’) ?
// extract of the query 'tax_query' => array( 'relation' => 'AND', array( 'field' => 'term_id', 'taxonomy' => 'category', 'terms' => array ('publication', 'evenement'), 'operator' => 'IN' ), array( 'field' => 'slug', 'taxonomy' => 'domain', 'terms' => array( 'aerien', 'sous-marin'), 'operator' => 'IN' ) )
In fact NO, because interpreting $query needs the taxonomy to be declared in blog_id #3 where this code is.
A workaround ?
The plugin registering this new taxonomy must not be ‘network activated’ but one by one in #2 and #3 and in properties of this taxonomy, define where the taxonomy must be visible (here #2)
'show_ui' => ($current_blog->blog_id == 2 ) ? true :false,
With this workaround, the deficiency of switch_to_blog( 2 );
is “fixed” and it now possible to display with a custom function (including complex query) in theme of website #3 a list of posts coming from #2.
utf8mb4 upgrade
This post describes in details the utf8mb4 upgrade in mySQL table and why…
“The difference between utf8 and utf8mb4 is that the former can only store 3 byte characters, while the latter can store 4 byte characters.“
WordCamp Lyon – June 2015 – Feedback
The report of “WordCamp Lyon – Juin 2015 – Quelques notes” is only in french.
Child theme : after but not too soon
The read french version of this post presents why action priority of after_theme_setup must be carefully defined : 11 and not 10 (default)
Rendez-vous in WordCamp Lyon 2015, June 5th
How to include language in a query with xili-language ?
$faq_args = array( 'post_type' => 'hrf_faq', 'post_status' => 'publish', 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'lang' => xili_curlang() ); if( $faq_params['category'] != '' ){ $faq_args['category_name'] = $faq_params['category']; } $faq_query = new WP_Query( $faq_args ); if( $faq_query->have_posts() ): while( $faq_query->have_posts() ): $faq_query->the_post();
In the lines above, the WP_Query is called with query vars as in URI. Currently, the result is good because the request will be now transformed in an array of params (and taxonomy).
TIPS: But it is possible to give a better description with arrays passed as below (remember ‘language’ is a taxonomy since 6 years):
if ( $faq_params['lang'] ) { $lang_slug = ( $faq_params['lang'] == 'cur') ? xili_curlang() : $faq_params['lang'] ; $query = array( 'numberposts' => -1, 'post_type' => 'hrf_faq', 'tax_query' => array( 'relation' => 'AND', array( 'field' => 'slug', 'taxonomy' => 'language', 'terms' => $lang_slug, ), ), ); if ($faq_params['category'] != '') { $query['tax_query'][] = array( 'field' => 'slug', 'taxonomy' => 'category', 'terms' => explode (',', $faq_params['category']) ); } } else { $query = array( 'numberposts' => -1, 'post_type' => 'hrf_faq' ); if ($faq_params['category'] != '') { $query['tax_query'] = array( array( 'field' => 'slug', 'taxonomy' => 'category', 'terms' => explode (',', $faq_params['category']) )); } } $faqs = new WP_Query( $query ) ; if ($faqs) { while ( $faqs->have_posts() ) : $faqs->the_post(); $ID = get_the_ID();
For more accurate query, it will be easier to introduce others parameters (taxonomy, custom fields (meta), sorting…)..
Reference in codex.