Wordpress, Jquery, пользовательские поля, циклы PHP - PullRequest
1 голос
/ 25 ноября 2011

Я работаю над новым сайтом блога, и я далек от опыта работы с PHP.

http://www.theredo.ca/

Я пытаюсь сделать следующее:

Каждое сообщение имеет настраиваемое поле «таймер».

Внутри настраиваемого поля есть фрагмент javascript:

<script type="text/javascript">      
    $j(document).ready(function(){

        //init plugin
        $j('#event-1').fancyCountdown({year:2011, month:9, day:31, hour:0, minute:0, second:0, timezone:0, dayDigitsAmount: 3, digits:{days:true,hours:true,minutes:true,seconds:true}});


    });     
</script>

Мне нужно просмотреть все моии поместите этот javascript в нижний колонтитул - каждый пост будет иметь немного уникальный javascript (ID и другие переменные).

В настоящее время я использую этот фрагмент кода, который не является циклом и размещает толькопоследнее настраиваемое поле в нижний колонтитул.

<?php
    global $wp_query;
    $postid = $wp_query->post->ID;
    echo get_post_meta($postid, 'timer', true);
    wp_reset_query();
?>

Я уже использую цикл ранее, чтобы вытащить все посты и отобразить заголовки и пару других настраиваемых полей выше, что вызывало конфликт, когда я первоначально размещалJavascript, встроенный в HTML ...

Короче говоря - помощь?

Ответы [ 3 ]

0 голосов
/ 25 ноября 2011

попробуйте это, не уверен, что это то, что вы хотите.

<?php
query_posts();//get all posts
while ( have_posts() ) : the_post();
    echo get_post_meta($post->ID,'timer', true);
endwhile;
wp_reset_query();
?>
0 голосов
/ 25 ноября 2011

каждый пост будет иметь фрагмент кода:

$j('#event-1').fancyCountdown({year:2011, month:9, day:31, hour:0, minute:0, second:0, timezone:0, dayDigitsAmount: 3, digits:{days:true,hours:true,minutes:true,seconds:true}});

в то время как в вашем цикле WordPress соответствуют эти значения:

$countdown_script .= get_post_meta($post, 'timer', true);

затем после цикла повторить скрипт:

<script type="text/javascript">      
$j(document).ready(function(){
    <?php echo $countdown_script; ?>
});     
</script>
0 голосов
/ 25 ноября 2011

Я не могу себе представить, зачем вам нужен JS, который находится внутри вызова doc.ready, чтобы оказаться в нижнем колонтитуле (в любом случае он будет ждать готовности DOM), но вы можете использовать ловушку wordpress add_action, чтобы получить ваш контент там внизу.

Глядя на документы , я думаю, что-то вроде этого:

<?php add_action('wp_footer', function() { echo get_post_meta($postid, 'timer', true);}) ?>

Вы должны сделать это внутри «цикла», чтобы он запускался один раз для каждого сообщения, и все JS накапливались в нижнем колонтитуле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...