В настоящее время я редактирую мультисайт WordPress для удаления / исправления неработающей ссылки. На главной странице перечислены все сообщения из всех дочерних блогов в виде плиток на главной странице. Ссылка на имя автора неверна.
Я отследил его, и на странице content-single.php есть некоторый код, сгенерированный для извлечения данных, и значение %5$s
Я думал, что это может быть регулярное выражение, но я не могу подтвердить. Значение больше похоже на сокращенное выражение для извлечения переменной из базы данных. Сделал поиск в Google и до сих пор не могу узнать. Я наткнулся на эту страницу кодекса https://codex.wordpress.org/Function_Reference/get_the_category_list
Я до сих пор не могу понять, что означают значения. Что они имеют в виду?
Поэтому я сделал трассировку файлов PHP внутри темы. Во-первых, я увидел эту функцию на странице «content-single.php», которая генерирует контент с плохими ссылками. <?php slqblogs_posted_on(); ?>
<div class="entry-meta">
<?php slqblogs_posted_on(); ?>
<span class="sep">|</span>
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style ">
<a href="http://www.addthis.com/bookmark.php?v=250&pubid=ra-4f836b545f19f0e0" class="addthis_button_compact">Share</a>
</div>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f836b545f19f0e0"></script>
<!-- AddThis Button END -->
<div class="clear"></div>
</div><!-- .entry-meta -->
Очевидно, я заглянул в файл theme-functions.php и увидел функцию во всей красе:
if ( ! function_exists( 'slqblogs_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.
* Create your own slqblogs_posted_on to override in a child theme
*
* @since slqblogs 1.2
*/
function slqblogs_posted_on() {
printf( __( '<span class="posted-on"><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date published" datetime="%3$s" pubdate>%4$s</time><time class="updated">%8$s</time></a></span><span class="sep">|</span><span class="byline"> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'slqblogs' ),
esc_url( get_permalink() ),
esc_attr( get_the_time() ),
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
esc_attr( sprintf( __( 'View all posts by %s', 'slqblogs' ), get_the_author() ) ),
esc_html( get_the_author() ),
esc_attr( get_the_modified_date() )
);
}
endif;
Так вот где я сталкиваюсь со значением в классе span byline:
<span class="byline"> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>
Просто не могу понять, как получить доступ к значениям %5$s
или другие ключевые слова / выражения или что бы то ни было.
Честно говоря, этот вид сценариев WordPress PHP полностью выходит за рамки моей глубины и комфорта. Будем очень благодарны любой помощи.
Он предназначен для «замены» аргументов в дескрипторе формата sprintf / printf, то есть вы можете получить доступ к параметрам в любом порядке, например, например.
<?php
$p1 = 'a';
$p2 = 'b';
$p3 = 'c';
$p4 = 'd';
printf('%1$s %2$s %3$s %4$s'."\r\n", $p1, $p2, $p3, $p4);
printf('%4$s %3$s %2$s %1$s'."\r\n", $p1, $p2, $p3, $p4);
печать
a b c d
d c b a
хотя параметры p1-p4 были переданы в одном и том же порядке для обоих printf
s.
смотрите также: http://docs.php.net/manual/en/function.sprintf.php#example-5403
<?php printf('%1$s, %2$s, %3$s, %4$s', "1 value", "2 value", "3 value", "4 value"); ?>
Вывод будет выглядеть как
1 value, 2 value, 3 value, 4 value